Reputation: 55
Ok so here is the problem. How to have multiple background colors in a cell using Microsoft Excel. Microsoft has a built in gradient ability under the format cells menu>Fill>Fill Effects but that uses gradients. I want solid colors.
I will warn you up front that I am about to answer my own question but I can't find this solution any where yet I see a lot of people asking.
Upvotes: 0
Views: 2201
Reputation: 54
Old topic but I'm here with another exemple :
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
Upvotes: 0
Reputation: 55
Here is my solution which I found by altering the code that I recorded for Fill Effects.
In short the key to removing the gradient is to have the colorstops change color very close to eachother.
See my example below. I will post more example in a secondary Answer.
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
Upvotes: 2
Reputation: 55
As promised here are some more example of different cell fill methods.
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
Upvotes: 1