Excel VBA中的十六进制颜色代码

Excel VBA中的十六进制颜色代码,excel,vba,hex,Excel,Vba,Hex,您好,我正在使用HEX()指示excel中特定单元格的颜色。我做了4个例子,给出的结果令人困惑。其中2个给出了6位十六进制代码,另外2个给出了4位十六进制代码。我在网上搜索过,似乎十六进制代码必须是6位数?那么这4位代码代表什么呢 我还输入了这4位代码,但没有找到结果 Sub showcolor() Debug.Print Hex(ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Cells(10, "AB").Interior.Co

您好,我正在使用HEX()指示excel中特定单元格的颜色。我做了4个例子,给出的结果令人困惑。其中2个给出了6位十六进制代码,另外2个给出了4位十六进制代码。我在网上搜索过,似乎十六进制代码必须是6位数?那么这4位代码代表什么呢

我还输入了这4位代码,但没有找到结果

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

属性
Range.Interior.Color
返回RGB:

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

Right(“000000”和Hex(工作表(1)、单元格(1,“A”)、内部颜色)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
并且
ffff00
为黄色-:


您需要在RGB之类的东西上使用十六进制的具体原因是什么?十六进制值不是“代码”,它们是数字,以16进制(16个符号)表示-我们习惯于看到以10进制(10个符号)表示的数字。你得到的是4位数的值,原因与我们不将值
10
表示为
000010
@dwirony我只需要设置一个IF语句,这样从技术上讲RGB也可以工作,但我不知道如何找出单元格的RGB代码。@MathieuGuindon那么我能理解“C0FF”实际上是“00C0FF”吗?也就是说,用RGB表示的单元格颜色有些尴尬-如果我记得的话,R和B值是颠倒的。编辑: