我有一个旧版本的Excel在Excel 2003上运行正常,但会产生Excel 2010的问题。导致问题的部分是:
If Not IsNull(someRange.FormatConditions(parActiveCondition).Interior.Color) Then
locVisibleColor = someRange.FormatConditions(parActiveCondition).Interior.Color
End if
其中parActiveCondition
是someRange
上的有效条件格式编号。
当背景被选为“无颜色”时,someRange.FormatConditions(parActiveCondition).Interior.Color
返回
Null
问题是黑色背景也会返回0.因此,在Excel 2010中,似乎再也无法区分黑色背景和背景颜色。
有人知道解决方法吗?
ps:我显然可以选择白色背景而不是“无颜色”,但我不想更改所有电子表格和条件格式规则。
答案 0 :(得分:4)
您可以使用布尔辅助检查,例如
IsNull(someRange.FormatConditions(parActiveCondition).Interior.ColorIndex) 'or
IsNull(someRange.FormatConditions(parActiveCondition).Interior.TintAndShade)
当
.FormatConditions(parActiveCondition).Interior.Color = 0
答案 1 :(得分:0)
Option Explicit
Sub test()
Dim Color
Dim R As Integer
Dim G As Integer
Dim B As Integer
Color = ThisWorkbook.Sheets(1).Range("A1").Interior.Color
R = Color Mod 256
G = (Color \ 256) Mod 256
B = (Color \ 256 \ 256) Mod 256
ThisWorkbook.Sheets(1).Range("B1").Interior.Color = RGB(R, G, B)
End Sub
黑色返回(0,0,0)
然而,似乎“无颜色”返回(255,255,255)(=白色)