以下代码将颜色值转换为3D RGB阵列
Function Decimal2RGB(color_val)
Decimal2RGB = Array(color_val \ 256 ^ 0 And 255, color_val \ 256 ^ 1 And 255, color_val \ 256 ^ 2 And 255)
End Function
另一个类似的子项
Sub Sample()
Dim Col As Long
'~~> RGB to LONG
Col = RGB(255, 111, 254)
Debug.Print Col
'~~> LONG To RGB
R = Col Mod 256
G = (Col \ 256) Mod 256
B = (Col \ 256 \ 256) Mod 256
Debug.Print R
Debug.Print G
Debug.Print B
End Sub
我的问题是“ And”运算符在第一个子例程中做什么?
第一个子句的执行示例:{=Decimal2RGB(258)}
产生{2, 1, 0}
。
答案 0 :(得分:3)
正如吉普(Jeeped)所说,And
是VBA中的按位运算符。
因此And 255
屏蔽了所有高于第8位的位。例如:
455dec -> 111000111
255dec -> 011111111
And -> 011000111 -> 199dec