Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 造型条件与室内色彩_Excel_Excel 2010_Excel 2003_Vba - Fatal编程技术网

Excel 造型条件与室内色彩

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

我有一个旧的宏,它在Excel2003上运行良好,但在Excel2010中会产生问题。造成问题的部分是:

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
问题是黑色背景也返回0。因此,在Excel 2010中,似乎不再可能区分黑色背景和无背景色

有人知道解决办法吗

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

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