您好,我正在使用 HEX() 来指示 Excel 中特定单元格的颜色。我做了 4 个例子,给出的结果令人困惑。4 个中的 2 个给出了 6 位十六进制代码,另外 2 个给出了 4 位十六进制代码。我在网上查了一下,好像HEX代码必须是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
Run Code Online (Sandbox Code Playgroud)
给出的结果是
C0FF FFFF F0B000 FFFFFF
该Range.Interior.Color属性返回 RGB:
因此,在 中FFFF,Hex() 的前两个值被跳过。正确的应该是00FFFF. 这可以通过串联技巧来实现:
Right("000000" & Hex(Worksheets(1).Cells(1, "A").Interior.Color), 6)
此外,正如 @Mathiew Guindon 的评论中提到的,VBA 中的 RGB 值是相反的(无论出于何种原因)。然后需要将这两者进行良好的反转。这是在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
Run Code Online (Sandbox Code Playgroud)
并且ffff00是黄色的 - https://www.color-hex.com/color/ffff00:
| 归档时间: |
|
| 查看次数: |
26554 次 |
| 最近记录: |