通过宏代码将水平渐变填充效果应用于单元格的最佳方法是什么?
我已经在 Excel 中设置了所需的渐变(右键单击单元格 B1、设置单元格格式...、填充、填充效果、两种颜色、水平、“好的”全部)。
然后我有以下代码来找出如何通过代码表示这一点。当我逐步执行代码时,我可以使用 locals 窗口来检查 myrange 对象的渐变和色标:
Dim myrange As range
Set myrange = ActiveSheet.range("B1")
Run Code Online (Sandbox Code Playgroud)
使用这些信息,我现在可以在宏中对信息进行硬编码,希望通过代码复制渐变填充:
'First, delete any previous gradient colorstops
For Each cs In myrange.Interior.Gradient.ColorStops
cs.Delete
Next
'Then, assign the desired colorstops in the gradient
With myrange.Interior.Gradient.ColorStops
.add color = 16777215
Position = 0
ThemeColor = 1
TintAndShade = 0
.add color = 7961087
Position = 0.5
ThemeColor = 0
TintAndShade = 0
.add color = 16777215
Position = 1
ThemeColor = 1
TintAndShade = 0
End With
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会导致看起来完全错误的事情。最明显的错误是渐变是黑白的,即使我调整了 RGB 值。
这里还有什么需要添加的吗?
ColorStops 的分配不是有效代码。您需要添加色标,然后设置它们的属性。宏记录器正确执行此操作。
Sub SetGradient()
Dim myrange As Range
Set myrange = ThisWorkbook.Sheets("Sheet1").Range("B1")
With myrange.Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 90
.Gradient.ColorStops.Clear
End With
With myrange.Interior.Gradient.ColorStops.Add(0)
.Color = 16777215
.TintAndShade = 0
End With
With myrange.Interior.Gradient.ColorStops.Add(0.5)
.Color = 7961087
.TintAndShade = 0
End With
With myrange.Interior.Gradient.ColorStops.Add(1)
.Color = 16777215
.TintAndShade = 0
End With
End Sub
Run Code Online (Sandbox Code Playgroud)