FormatConditions和内部颜色

时间:2012-10-02 11:54:37

标签: excel excel-vba excel-2010 excel-2003 vba

我有一个旧版本的Excel在Excel 2003上运行正常,但会产生Excel 2010的问题。导致问题的部分是:

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

其中parActiveConditionsomeRange上的有效条件格式编号。

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

    Excel 2003中的
  • Null
  • Excel 2010中的
  • 0

问题是黑色背景也会返回0.因此,在Excel 2010中,似乎再也无法区分黑色背景和背景颜色。

有人知道解决方法吗?

ps:我显然可以选择白色背景而不是“无颜色”,但我不想更改所有电子表格和条件格式规则。

2 个答案:

答案 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)(=白色)