2

我有一个旧宏在 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在 Excel 2003 中
  • Excel 2010 中的 0

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

有人知道解决方法吗?

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

4

2 回答 2

5

您可以使用布尔辅助检查,例如

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

什么时候

.FormatConditions(parActiveCondition).Interior.Color = 0
于 2012-10-02T12:30:34.560 回答
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) (=white)

于 2012-10-02T12:18:03.833 回答