VBA中的十六进制颜色代码

时间:2019-07-19 17:11:28

标签: excel vba hex

嗨,我正在使用HEX()来指示Excel中特定单元格的颜色。我做了4个例子,给出的结果令人困惑。 4个中的2个给出了6位数的十六进制代码,其他2个给出了4位数的十六进制代码。我在网上进行了搜索,似乎十六进制代码必须为6位数字?那么这些4位数字代码代表什么?

我还将这些4位数字的代码放在https://www.color-hex.com/中,但未找到结果。

Sub showcolor()

Debug.Print Hex(ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Cells(10, "AB").Interior.Color)
Debug.Print Hex(ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Cells(34, "AB").Interior.Color)
Debug.Print Hex(ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Cells(13, "AB").Interior.Color)
Debug.Print Hex(ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Cells(12, "AB").Interior.Color)

End Sub

给出的结果是

C0FF FFFF F0B000 FFFFFF

1 个答案:

答案 0 :(得分:4)

3,3,3,3属性返回RGB:

因此,在Range.Interior.Color中,将跳过Hex()的前两个值。正确的应该是FFFF。这可以通过串联技巧来实现:

00FFFF

此外,如@Mathiew Guindon的评论中所述,VBA are reversed中的RGB值(无论出于何种原因)。然后,需要对这两个进行很好的反转。这是通过Right("000000" & Hex(Worksheets(1).Cells(1, "A").Interior.Color), 6)函数完成的:

HexToRgb()

Sub TestMe() Worksheets(1).Cells(1, "A").Interior.Color = vbYellow Debug.Print Hex(Worksheets(1).Cells(1, "A").Interior.Color) 'FFFF Debug.Print Worksheets(1).Cells(1, "A").Interior.Color '65535 Dim hexColor As String hexColor = Right("000000" & Hex(Worksheets(1).Cells(1, "A").Interior.Color), 6) Debug.Print HexToRgb(hexColor) 'FFFF00 End Sub Public Function HexToRgb(hexColor As String) As String Dim red As String Dim green As String Dim blue As String red = Left(hexColor, 2) green = Mid(hexColor, 3, 2) blue = Right(hexColor, 2) HexToRgb = blue & green & red End Function 是黄色-https://www.color-hex.com/color/ffff00

enter image description here