Excel VBA中的十六进制颜色代码
您好,我正在使用HEX()指示excel中特定单元格的颜色。我做了4个例子,给出的结果令人困惑。其中2个给出了6位十六进制代码,另外2个给出了4位十六进制代码。我在网上搜索过,似乎十六进制代码必须是6位数?那么这4位代码代表什么呢 我还输入了这4位代码,但没有找到结果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
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值是颠倒的。编辑: