Jon*_*nny 14 excel vba colors excel-vba
我希望在Excel VBA项目中的变量中存储RGB颜色,以用于设置整个子中各种单元格/范围的背景颜色.
我想在变量中设置一次颜色,这样如果我决定改变它,我只需要在一个地方进行.
但是我的下面的尝试不起作用:
Dim clrBlue As ColorFormat
clrBlue = RGB(0, 0, 256)
Range("a2").Interior.Color = clrBlue
Range("b3").Interior.Color = clrBlue
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,我得到一个Object variable or With block variable not set运行时错误.
我觉得我做的事情根本就错了!任何人都可以建议它是什么?甚至可以这样做吗?
在写这个我知道我可以写不同的功能(SetBlue,SetRed,SetGreen)申请每种颜色,但是这只是感觉凌乱.
Tom*_*Tom 33
RGB返回一个Long,所以你需要声明clrBlue的Long,而不是作为ColorFormat.
Dim clrBlue As Long
clrBlue = RGB(0, 0, 255)
Application.union(Range("A2"), Range("B3")).Interior.Color = clrBlue
Run Code Online (Sandbox Code Playgroud)
Eri*_*lan 10
正如其他人所说,RGB()返回一个Long,所以你需要使用它而不是ColorFormat.在一个有点相关的说明中,我真的很喜欢C#中的Color enum,我开始在我的VBA模块中模仿它.您可以创建自己的枚举来存储项目中的颜色值,然后使用Color.Blue引用颜色.
如果你决定使用不同的蓝色,这也可以很容易地修改颜色.更新枚举,您使用Color.Blue的所有地方都将更新.
例:
Public Enum Color
Black = 0 'RGB(0, 0, 0)
Blue = 14390640 'RGB(112, 149, 219)
Gray = 11842740 'RGB(180, 180, 180)
Red = 6118894 'RGB(238, 93, 93)
White = 16777215 'RGB(255, 255, 255)
End Enum
Run Code Online (Sandbox Code Playgroud)
要获取要存储的RGB值的长值,我只是将值放入立即窗口并复制输出.
在立即窗口中,键入:
? RGB(112, 149, 219)
Run Code Online (Sandbox Code Playgroud)
输出将是14390640.可能有一种更简单的方法来获得该值.
| 归档时间: |
|
| 查看次数: |
60770 次 |
| 最近记录: |