2012-10-02 102 views
1

我有工作正常在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回報

  • Null在Excel在Excel 2003

的問題是,一個黑色的背景也返回0所以在Excel 2010中,似乎不再可能在黑色背景和不背景色之間做出區別。

有人知道解決方法嗎?

ps:我明顯可以選擇白色背景而不是「無顏色」,但我寧願不更改所有電子表格和條件格式規則。

+0

我想'TintAndShade'是'Null'爲'不Color'但0黑色。因此,這可以區分2作爲第二次測試 – brettdj

+1

@brettdj這似乎是伎倆 - 如果你願意,可以隨意張貼答案。 – assylias

回答

4

你可以使用一個布爾二次檢查,如

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

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

+0

它是否仍然適用於某些條件格式(例如:如果<0且沒有顏色背景,則爲紅色)?這不是我打電話的功能。 – assylias

+0

對不起,我不完全瞭解你的問題。但似乎你找到了你的問題的答案。有趣的問題,你每天都不會想到的。 – Trace

+0

有關信息:我使用Excel 2010. – Trace