如何在Excel条件格式VBA代码中使用指定十六进制颜色值?
替换VBA条件格式中的ColorIndex为自定义十六进制颜色
要在VBA中使用自定义十六进制颜色,不能直接传入十六进制字符串,需要将其转换为RGB值(或使用Excel兼容的BGR顺序十六进制数值)。以下是修改后的完整代码,直接替换原代码中的ColorIndex设置即可:
' (1) Highlight defined good as green values (#006100) With Range("b:b").FormatConditions.Add(xlCellValue, xlEqual, "=2") .Interior.Color = RGB(0, 97, 0) ' 对应十六进制#006100 .StopIfTrue = False End With With Range("b:b").FormatConditions.Add(xlCellValue, xlEqual, "in Anfrage") .Interior.Color = RGB(0, 97, 0) .StopIfTrue = False End With ' (2) Highlight defined ok as yellow values (#9C5700) With Range("b:b").FormatConditions.Add(xlCellValue, xlEqual, "=1") .Interior.Color = RGB(156, 87, 0) ' 对应十六进制#9C5700 .StopIfTrue = False End With With Range("b:b").FormatConditions.Add(xlCellValue, xlEqual, "ok") .Interior.Color = RGB(156, 87, 0) .StopIfTrue = False End With ' (3) Highlight defined bad as red values (#9C0006) With Range("b:b").FormatConditions.Add(xlCellValue, xlEqual, "=3") .Interior.Color = RGB(156, 0, 6) ' 对应十六进制#9C0006 .StopIfTrue = False End With With Range("b:b").FormatConditions.Add(xlCellValue, xlEqual, "kritisch") .Interior.Color = RGB(156, 0, 6) .StopIfTrue = False End With
补充说明
- RGB函数参数顺序为红(R)、绿(G)、蓝(B),完全对应十六进制颜色的
#RRGGBB格式拆分后的数值 - 如果偏好直接使用十六进制数值赋值,需注意Excel采用BGR颜色顺序:比如
#9C5700要写成&H00579C,代码中对应.Interior.Color = &H00579C,效果与RGB函数一致
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

