问题就在这里。如何使用Microsoft Excel在单元格中设置多个背景色。微软在格式单元格菜单>填充>填充效果下有一个内置的渐变功能,但它使用渐变。我想要纯色的。我会事先警告你,我即将回答我自己的问题,但我找不到这个解决方案,但我看到很多人问。
xt0899hw1#
这是我的解决方案,我发现通过改变代码,我记录的填充效果。简而言之,去除渐变的关键是让色标彼此非常接近地改变颜色。看我下面的例子。我会在第二个答案中给出更多的例子。
Sub Macro5()'' Macro5 Macro''Linear Gradients' value description Example' 0 Degree Vertical 1'Example 1With Selection.Interior .Pattern = xlPatternLinearGradient .Gradient.Degree = 0 .Gradient.ColorStops.ClearEnd WithWith Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1End WithWith Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1End WithEnd Sub
Sub Macro5()
'
' Macro5 Macro
'Linear Gradients
' value description Example
' 0 Degree Vertical 1
'Example 1
With Selection.Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 0
.Gradient.ColorStops.Clear
End With
With Selection.Interior.Gradient.ColorStops.Add(0)
.ThemeColor = xlThemeColorDark1
With Selection.Interior.Gradient.ColorStops.Add(0.49)
With Selection.Interior.Gradient.ColorStops.Add(0.51)
.ThemeColor = xlThemeColorAccent1
With Selection.Interior.Gradient.ColorStops.Add(1)
End Sub
ne5o7dgx2#
正如所承诺的,这里有一些不同的单元格填充方法的例子。
Sub Macro6()'' Macro5 Macro''Linear Gradients' value description Example' 90 Degree Horizontal 2' 45 Degree Diagonal (UL,LwR Corners) 3' 135 Degree Diagonal (LwL UR Corners) 4' ??? Degree Whatever ofther angle you want! 5' U = Upper, Lw = Lower, L = Left, R = Right'Example 2ActiveCell.Offset(1, 0).Range("A1").SelectWith Selection.Interior .Pattern = xlPatternLinearGradient .Gradient.Degree = 90 .Gradient.ColorStops.ClearEnd WithWith Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1End WithWith Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1End With'Example 3ActiveCell.Offset(1, 0).Range("A1").SelectWith Selection.Interior .Pattern = xlPatternLinearGradient .Gradient.Degree = 45 .Gradient.ColorStops.ClearEnd WithWith Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1End WithWith Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1End With'Example 4ActiveCell.Offset(1, 0).Range("A1").SelectWith Selection.Interior .Pattern = xlPatternLinearGradient .Gradient.Degree = 135 .Gradient.ColorStops.ClearEnd WithWith Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1End WithWith Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1End With'Example 5ActiveCell.Offset(1, 0).Range("A1").SelectWith Selection.Interior .Pattern = xlPatternLinearGradient .Gradient.Degree = 15 .Gradient.ColorStops.ClearEnd WithWith Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1End WithWith Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1End With'Rectangular Gradients'See Example 6'Selecting Quadrant' Property Value Example Result' RectangleLeft 0 or 1 1 Upper Right Quadrant' RectangleTop 0 or 1 0' RectangleRight 0 or 1 1' RectangleBottom 0 or 1 0'Selecting Center'See Example 7'Value other than .5 get you off center but still off of edge' Property Value Example Result' RectangleLeft 0.5 1 Center' RectangleTop 0.5 0' RectangleRight 0.5 1' RectangleBottom 0.5 0'Change Size of Quadrant or Center'see example 8,9' Use color stops to do this' remember to keep colr stops closs to remove gradient' Example color stops at 0, 0.49, 0.51, 1 will give you either' a quadrant or approximately half of center'Example 6ActiveCell.Offset(1, 0).Range("A1").SelectWith Selection.Interior .Pattern = xlPatternRectangularGradient .Gradient.RectangleLeft = 1 .Gradient.RectangleTop = 1 .Gradient.RectangleRight = 1 .Gradient.RectangleBottom = 1 .Gradient.ColorStops.ClearEnd WithWith Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1End WithWith Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1End With'Example 7ActiveCell.Offset(1, 0).Range("A1").SelectWith Selection.Interior .Pattern = xlPatternRectangularGradient .Gradient.RectangleLeft = 0.5 .Gradient.RectangleRight = 0.5 .Gradient.RectangleTop = 0.5 .Gradient.RectangleBottom = 0.5 .Gradient.ColorStops.ClearEnd WithWith Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1End WithWith Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1End With'Example 8 ActiveCell.Offset(1, 0).Range("A1").SelectWith Selection.Interior .Pattern = xlPatternRectangularGradient .Gradient.RectangleLeft = 1 .Gradient.RectangleTop = 1 .Gradient.RectangleRight = 1 .Gradient.RectangleBottom = 1 .Gradient.ColorStops.ClearEnd WithWith Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.69) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.71) .ThemeColor = xlThemeColorAccent1End WithWith Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1End With'Example 9ActiveCell.Offset(1, 0).Range("A1").SelectWith Selection.Interior .Pattern = xlPatternRectangularGradient .Gradient.RectangleLeft = 0.5 .Gradient.RectangleRight = 0.5 .Gradient.RectangleTop = 0.5 .Gradient.RectangleBottom = 0.5 .Gradient.ColorStops.ClearEnd WithWith Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.29) .ThemeColor = xlThemeColorDark1End WithWith Selection.Interior.Gradient.ColorStops.Add(0.31) .ThemeColor = xlThemeColorAccent1End WithWith Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1End With'Example 10 (German Flag)ActiveCell.Offset(1, 0).Range("A1").SelectWith Selection.Interior .Pattern = xlPatternLinearGradient .Gradient.Degree = 90 .Gradient.ColorStops.ClearEnd WithWith Selection.Interior.Gradient.ColorStops.Add(0) .Color = RGB(0, 0, 0)End WithWith Selection.Interior.Gradient.ColorStops.Add(0.329) .Color = RGB(0, 0, 0)End WithWith Selection.Interior.Gradient.ColorStops.Add(0.331) .Color = RGB(208, 0, 0)End WithWith Selection.Interior.Gradient.ColorStops.Add(0.659) .Color = RGB(208, 0, 0)End WithWith Selection.Interior.Gradient.ColorStops.Add(0.661) .Color = RGB(255, 206, 0)End WithWith Selection.Interior.Gradient.ColorStops.Add(1) .Color = RGB(255, 206, 0)End WithEnd Sub
Sub Macro6()
' 90 Degree Horizontal 2
' 45 Degree Diagonal (UL,LwR Corners) 3
' 135 Degree Diagonal (LwL UR Corners) 4
' ??? Degree Whatever ofther angle you want! 5
' U = Upper, Lw = Lower, L = Left, R = Right
'Example 2
ActiveCell.Offset(1, 0).Range("A1").Select
.Gradient.Degree = 90
'Example 3
.Gradient.Degree = 45
'Example 4
.Gradient.Degree = 135
'Example 5
.Gradient.Degree = 15
'Rectangular Gradients
'See Example 6
'Selecting Quadrant
' Property Value Example Result
' RectangleLeft 0 or 1 1 Upper Right Quadrant
' RectangleTop 0 or 1 0
' RectangleRight 0 or 1 1
' RectangleBottom 0 or 1 0
'Selecting Center
'See Example 7
'Value other than .5 get you off center but still off of edge
' RectangleLeft 0.5 1 Center
' RectangleTop 0.5 0
' RectangleRight 0.5 1
' RectangleBottom 0.5 0
'Change Size of Quadrant or Center
'see example 8,9
' Use color stops to do this
' remember to keep colr stops closs to remove gradient
' Example color stops at 0, 0.49, 0.51, 1 will give you either
' a quadrant or approximately half of center
'Example 6
.Pattern = xlPatternRectangularGradient
.Gradient.RectangleLeft = 1
.Gradient.RectangleTop = 1
.Gradient.RectangleRight = 1
.Gradient.RectangleBottom = 1
'Example 7
.Gradient.RectangleLeft = 0.5
.Gradient.RectangleRight = 0.5
.Gradient.RectangleTop = 0.5
.Gradient.RectangleBottom = 0.5
'Example 8
With Selection.Interior.Gradient.ColorStops.Add(0.69)
With Selection.Interior.Gradient.ColorStops.Add(0.71)
'Example 9
With Selection.Interior.Gradient.ColorStops.Add(0.29)
With Selection.Interior.Gradient.ColorStops.Add(0.31)
'Example 10 (German Flag)
.Color = RGB(0, 0, 0)
With Selection.Interior.Gradient.ColorStops.Add(0.329)
With Selection.Interior.Gradient.ColorStops.Add(0.331)
.Color = RGB(208, 0, 0)
With Selection.Interior.Gradient.ColorStops.Add(0.659)
With Selection.Interior.Gradient.ColorStops.Add(0.661)
.Color = RGB(255, 206, 0)
1aaf6o9v3#
老主题,但我在这里与另一个问题:
With Selection .Interior.Pattern = xlPatternLinearGradient .Interior.Gradient.Degree = 90 .Interior.Gradient.ColorStops.Clear .Interior.Gradient.ColorStops.Add(0).Color = 16777215 'no fill .Interior.Gradient.ColorStops.Add(0.23).Color = 16777215 .Interior.Gradient.ColorStops.Add(0.24).Color = 15917529 'blue .Interior.Gradient.ColorStops.Add(0.76).Color = 15917529 .Interior.Gradient.ColorStops.Add(0.77).Color = 16777215 .Interior.Gradient.ColorStops.Add(1).Color = 16777215 End With
With Selection
.Interior.Pattern = xlPatternLinearGradient
.Interior.Gradient.Degree = 90
.Interior.Gradient.ColorStops.Clear
.Interior.Gradient.ColorStops.Add(0).Color = 16777215 'no fill
.Interior.Gradient.ColorStops.Add(0.23).Color = 16777215
.Interior.Gradient.ColorStops.Add(0.24).Color = 15917529 'blue
.Interior.Gradient.ColorStops.Add(0.76).Color = 15917529
.Interior.Gradient.ColorStops.Add(0.77).Color = 16777215
.Interior.Gradient.ColorStops.Add(1).Color = 16777215
3条答案
按热度按时间xt0899hw1#
这是我的解决方案,我发现通过改变代码,我记录的填充效果。
简而言之,去除渐变的关键是让色标彼此非常接近地改变颜色。
看我下面的例子。我会在第二个答案中给出更多的例子。
ne5o7dgx2#
正如所承诺的,这里有一些不同的单元格填充方法的例子。
1aaf6o9v3#
老主题,但我在这里与另一个问题: