Excel 造型条件与室内色彩
我有一个旧的宏,它在Excel2003上运行良好,但在Excel2010中会产生问题。造成问题的部分是:Excel 造型条件与室内色彩,excel,excel-2010,excel-2003,vba,Excel,Excel 2010,Excel 2003,Vba,我有一个旧的宏,它在Excel2003上运行良好,但在Excel2010中会产生问题。造成问题的部分是: If Not IsNull(someRange.FormatConditions(parActiveCondition).Interior.Color) Then locVisibleColor = someRange.FormatConditions(parActiveCondition).Interior.Color End if 其中,parActiveCondition是s
If Not IsNull(someRange.FormatConditions(parActiveCondition).Interior.Color) Then
locVisibleColor = someRange.FormatConditions(parActiveCondition).Interior.Color
End if
其中,parActiveCondition
是someRange
上的活动条件格式编号
当背景选择为“无颜色”时,someRange.FormatConditions(parActiveCondition).Interior.Color
返回
- Excel 2003中的
Null
- Excel 2010中的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)然而,“无颜色”返回(255255255)(=白色)您可以使用布尔二次检查,例如
IsNull(someRange.FormatConditions(parActiveCondition).Interior.ColorIndex) 'or
IsNull(someRange.FormatConditions(parActiveCondition).Interior.TintAndShade)
什么时候
我认为
TintAndShade
对于No Color
来说是Null
,但是对于黑色来说是0。因此,这可以区分二者作为次要因素test@brettdj这似乎很管用——如果你愿意的话,可以随意发布答案。它是否仍然适用于某些条件格式(说:红色如果我很抱歉,我不完全理解你的问题。但是你似乎找到了你问题的答案。有趣的问题,一些你每天都不会想到的东西。@Assylias你是对的,它不适用于条件格式。我应该检查一下。正如旁注:我通常编写一个函数来执行格式化条件。)使用select大小写的选项,并让函数返回“状态”(整数、布尔值,具体取决于)。这样可以根据直接数字而不是颜色检查状态。以下是我的用例:我读取一些单元格,确定哪个条件格式规则是活动的(如果有),然后确定单元格的格式(基于活动规则)然后使用它来生成外部HTML报告,以复制可见的格式。在这种情况下,我的代码很不幸是无用的。我只是做了测试,它没有返回在某个时间点应用的条件格式的颜色。它只返回“白色”。我将把我的答复作为信息保留。
.FormatConditions(parActiveCondition).Interior.Color = 0