新人报到,400分放血,进来帮我就送分.VBA设置颜色常量的问题.
大家好,新人报到,400分放血!
我之前是用C语言多,今天刚开始学习写VBA程序,一边查x度,一边写程序.
做的是一个简单的,在符合条件时,把某单元格的背景色设置为某一颜色.
根据以往的经验,如果我直接写 Cells(y,x).Interior.Color = RGB(r,g,b) ,是可以的,
但以下写法应该会更好
Const myBgColor As Long = ????
... ... ....
Cells(y,x).Interior.Color = myBgColor
这样会更方便以后代码维护.
问题出在 Const myBgColor As Long = ???? 处,问号该如何写?
想当然地,我这样写(C语言我是这样写的), Const myBgColor As Long = RGB(r,g,b)
报错信息是"要求常量表达式",这个 RGB(r,g,b)并非像C那样属于一种预编译宏替换,
RGB(r,g,b)是一个函数,虽然这个函数的结果简单得人脑可以在写代码的时候就知道他的值,
但程序仍然需要在运行时才得到值,一个动态的值赋值给常量是不行的,
在网上查到的,给颜色赋值的代码,基本上是这样的 cr = &HF08040 这种不直观的写法,
我还没有查到一种写得比较好的方法.
而系统自带的,是这样写的 VBA.ColorConstants.vbGreen = &HFF00
这似乎预视着,想自定义颜色常量,要写得比较直观,并没有很好的解决方案.
函数的返回值,不可能是常数,能否用类似宏替换来代替函数呢,网上查了一下,
VBA 与 VB 都是没有宏替换的.
我的初步结论是:
由于没有宏替换,一个很简单的RGB(r,g,b)数值处理也要写成函数,从而导致他与常量处理无缘,
导致颜色常量的写法很难看. cr = &Hxxxxxx
VBA我今天初学,我想讨论一下:
到底有没有定义颜色常量的比较好的写法?
如果只能写成 cr = &Hxxxxxx , 那我能否定义一些全局的变量来使用
例如:
在函数的外面写: Dim myBgColor As Long = RGB(r,g,b) (这种写法是报错的,我初学,语法懂得不多,寻求一种对的写法)
又或者在函数的外面写:
Dim myBgColor As Long
myBgColor = RGB(r,g,b) (这种写法同样是报错的)
我并不想在我的函数里面这样写
Dim myBgColor As Long
myBgColor = RGB(r,g,b)
这样写是对的,但不符合我的要求,因为 myBgColor 会在多个函数里用到,我每个函数里面都写,则不方便代码管理.