渐变颜色意外变化

时间:2016-06-01 08:55:22

标签: excel vba excel-vba gradient linear-gradients

我一直在研究格式化宏,它根据用户表单中的选择值接受选择并格式化它们。其中一个选项会创建一个大型合并单元格,其颜色渐变从浅红色到深红色。

当我运行宏时,单元格都被适当地格式化,但是当我在工作表中导航时,我注意到一个奇怪的问题,渐变的颜色将变为蓝色而不是红色。有趣的是,原始颜色会随机返回,有时甚至会呈现从蓝色到红色或从红色到蓝色的渐变。

如果我使用格式画家拉出错误的单元格并在其他地方进行测试,新的破碎/更改颜色方案随之移动。我已经包含了下面格式化合并单元格的代码。或许,我是如何指定内饰颜色的?

With Range(WorkingRange(1, 2), WorkingRange(1, WorkingRange.Count - 1))
    .Merge
    .HorizontalAlignment = xlLeft
    .WrapText = True
    .Interior.Pattern = xlPatternLinearGradient
    .Interior.Gradient.ColorStops.Add(0).Color = 255
    .Interior.Gradient.ColorStops.Add(0).TintAndShade = 0
    .Interior.Gradient.ColorStops.Add(1).Color = 130
    .Font.Bold = True
End With

1 个答案:

答案 0 :(得分:1)

您要添加ColorStop 0两次。第二次使用默认颜色。

应该是

...
    .Interior.Pattern = xlPatternLinearGradient
    .Interior.Gradient.ColorStops.Clear
    With .Interior.Gradient.ColorStops.Add(0)
     .Color = RGB(255, 0, 0)
     .TintAndShade = 0
    End With
    .Interior.Gradient.ColorStops.Add(1).Color = RGB(130, 0, 0)
...

使用RGB功能可以更灵活地使用不同的颜色。