你好,我使用HEX()来表示Excel中特定单元格的颜色。我做了4个例子,给出的结果令人困惑。4个中的2个给出了6位数的HEX代码,另外2个给出了4位数的HEX代码。我在网上搜索了一下,似乎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
给出的结果是
C0FF FFFF F0B000 FFFF
2条答案
按热度按时间bkkx9g8r1#
Range.Interior.Color
属性返回RGB:因此,在
FFFF
中,Hex()的前两个值被跳过。正确的值应该是00FFFF
。这可以通过级联技巧实现:Right("000000" & Hex(Worksheets(1).Cells(1, "A").Interior.Color), 6)
此外,正如@Mathiew Guindon的评论中提到的,VBA中的RGB值are reversed(无论出于何种原因)。然后需要将这两个值进行一次很好的反向。这在
HexToRgb()
函数中完成:ffff00
是黄色的-https://www.color-hex.com/color/ffff00:uxhixvfz2#
如果您正在阅读或保存字符串中的颜色十六进制代码,即
00FF00
表示绿色,则以下VBA代码段应将十六进制颜色值转换为VBA颜色值:应该可以。