如何在Excel中使用无梯度的VBA使多个背景颜色的单元格?

好的,这是问题所在。 如何使用Microsoft Excel在单元格中使用多个背景颜色。 Microsoft在格式单元格菜单>填充>填充效果下具有内置渐变function,但使用渐变。 我想要纯色。

我会提醒你,我要回答我自己的问题,但我不能find这个解决scheme,但我看到很多人问。

这是我通过改变我为填充效果logging的代码find的解决scheme。

简而言之,去除渐变的关键是让颜色的顶点彼此变得非常接近。

看我下面的例子。 我会张贴更多的例子在二级答案。

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 End With With Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1 End With With Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1 End With End Sub 

如所承诺的,这里是一些不同的单元格填充方法的例子。

 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 2 ActiveCell.Offset(1, 0).Range("A1").Select With Selection.Interior .Pattern = xlPatternLinearGradient .Gradient.Degree = 90 .Gradient.ColorStops.Clear End With With Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1 End With With Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1 End With 'Example 3 ActiveCell.Offset(1, 0).Range("A1").Select With Selection.Interior .Pattern = xlPatternLinearGradient .Gradient.Degree = 45 .Gradient.ColorStops.Clear End With With Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1 End With With Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1 End With 'Example 4 ActiveCell.Offset(1, 0).Range("A1").Select With Selection.Interior .Pattern = xlPatternLinearGradient .Gradient.Degree = 135 .Gradient.ColorStops.Clear End With With Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1 End With With Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1 End With 'Example 5 ActiveCell.Offset(1, 0).Range("A1").Select With Selection.Interior .Pattern = xlPatternLinearGradient .Gradient.Degree = 15 .Gradient.ColorStops.Clear End With With Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1 End With With Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1 End 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 6 ActiveCell.Offset(1, 0).Range("A1").Select With Selection.Interior .Pattern = xlPatternRectangularGradient .Gradient.RectangleLeft = 1 .Gradient.RectangleTop = 1 .Gradient.RectangleRight = 1 .Gradient.RectangleBottom = 1 .Gradient.ColorStops.Clear End With With Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1 End With With Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1 End With 'Example 7 ActiveCell.Offset(1, 0).Range("A1").Select With Selection.Interior .Pattern = xlPatternRectangularGradient .Gradient.RectangleLeft = 0.5 .Gradient.RectangleRight = 0.5 .Gradient.RectangleTop = 0.5 .Gradient.RectangleBottom = 0.5 .Gradient.ColorStops.Clear End With With Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.49) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.51) .ThemeColor = xlThemeColorAccent1 End With With Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1 End With 'Example 8 ActiveCell.Offset(1, 0).Range("A1").Select With Selection.Interior .Pattern = xlPatternRectangularGradient .Gradient.RectangleLeft = 1 .Gradient.RectangleTop = 1 .Gradient.RectangleRight = 1 .Gradient.RectangleBottom = 1 .Gradient.ColorStops.Clear End With With Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.69) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.71) .ThemeColor = xlThemeColorAccent1 End With With Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1 End With 'Example 9 ActiveCell.Offset(1, 0).Range("A1").Select With Selection.Interior .Pattern = xlPatternRectangularGradient .Gradient.RectangleLeft = 0.5 .Gradient.RectangleRight = 0.5 .Gradient.RectangleTop = 0.5 .Gradient.RectangleBottom = 0.5 .Gradient.ColorStops.Clear End With With Selection.Interior.Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.29) .ThemeColor = xlThemeColorDark1 End With With Selection.Interior.Gradient.ColorStops.Add(0.31) .ThemeColor = xlThemeColorAccent1 End With With Selection.Interior.Gradient.ColorStops.Add(1) .ThemeColor = xlThemeColorAccent1 End With 'Example 10 (German Flag) ActiveCell.Offset(1, 0).Range("A1").Select With Selection.Interior .Pattern = xlPatternLinearGradient .Gradient.Degree = 90 .Gradient.ColorStops.Clear End With With Selection.Interior.Gradient.ColorStops.Add(0) .Color = RGB(0, 0, 0) End With With Selection.Interior.Gradient.ColorStops.Add(0.329) .Color = RGB(0, 0, 0) End With With Selection.Interior.Gradient.ColorStops.Add(0.331) .Color = RGB(208, 0, 0) End With With Selection.Interior.Gradient.ColorStops.Add(0.659) .Color = RGB(208, 0, 0) End With With Selection.Interior.Gradient.ColorStops.Add(0.661) .Color = RGB(255, 206, 0) End With With Selection.Interior.Gradient.ColorStops.Add(1) .Color = RGB(255, 206, 0) End With End Sub