FormatConditions和Interior Color

我有一个在Excel 2003上工作正常的旧macros,但是会在Excel 2010中产生问题。导致问题的部分是:

If Not IsNull(someRange.FormatConditions(parActiveCondition).Interior.Color) Then locVisibleColor = someRange.FormatConditions(parActiveCondition).Interior.Color End if 

其中parActiveConditionparActiveCondition上活动的条件格式编号。

当背景被选为“无颜色”时, someRange.FormatConditions(parActiveCondition).Interior.Color返回

  • 在Excel 2003中为Null
  • 0在Excel 2010中

问题是,黑色背景也返回0.因此,在Excel 2010中似乎不再可能使黑色背景和无背景色之间的区别。

有人知道一个解决方法吗?

PS:我显然可以select一个白色的背景,而不是“没有颜色”,但我宁愿不改变所有的电子表格和条件格式规则。

您可以使用布尔二级检查,如

 IsNull(someRange.FormatConditions(parActiveCondition).Interior.ColorIndex) 'or IsNull(someRange.FormatConditions(parActiveCondition).Interior.TintAndShade) 

什么时候

 .FormatConditions(parActiveCondition).Interior.Color = 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)(=白色)