嗨,我正在使用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
答案 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: