我想获取Color的十六进制值。问题是在vba中,值.Font.Color.RGB以十进制形式出现,当我将该值更改为十六进制时,我得不到我需要的值。
例如:
vba中的颜色蓝紫色为14822282。 在html中,值为#8A2BE2 但是当我使用Hex(14822282)方法时,我得到了E22B8A。
如何获得正确的数字?
答案 0 :(得分:1)
它无法工作的原因是因为您需要使用按位运算将该十进制值拆分为3个组件(R,G,B),然后将每个组件分别转换为十六进制。然后,您可以将十六进制值连接在一起,这将获得HTML十六进制值。
以下是一个例子:
要获得绿色组件,你会做一点这样的转变:
14822282 >> 8
只取字节值并将其转换为十六进制,这将为您提供0x2B,这是RGB的G分量。
要获得红色分量,请向右移16位:
14822282 >> 16
这将为您提供十六进制的0xE2。
要获得蓝色分量,请向右除掉远8位以外的所有位。你会得到0x8A。
这就是#E22B8A。
答案 1 :(得分:1)
试试这个
Sub Sample()
Dim hexCode
hexCode = Hex(14822282)
For Index = 1 To Len(hexCode)
If InStr("01234567890ABCDEF", Mid$(hexCode, Index, 1)) = 0 Then
MsgBox "Not a valid hex color code"
Exit Sub
End If
Next
If Len(hexCode) = 6 Then _
Debug.Print "&H00" & Right(hexCode, 2) & _
Mid$(hexCode, 3, 2) & Left(hexCode, 2) & "&"
End Sub