This looked fun and (relatively) quick: Created a UDF in VBA. 1st arg is range to check, 2nd is check "Font" or "Fill", 3rd is what color to test for. If you pass a number, checks colorindex property. If you pass a string, checks to see if that string corresponds to a VB colorconstant.
(Edit) Just saw the other posts and looked at Chip's site. Probably need an Application.Volatile in the UDF. (End Edit)
WS example:
UDF Code:<font face=Courier New><SPAN style="color:#00007F">Function</SPAN> TestForColor(rngCell<SPAN style="color:#00007F">As</SPAN> Range, _
strTestWhat<SPAN style="color:#00007F">As</SPAN><SPAN style="color:#00007F">String</SPAN>, _
varTestColor<SPAN style="color:#00007F">As</SPAN><SPAN style="color:#00007F">Variant</SPAN>)<SPAN style="color:#00007F">As</SPAN><SPAN style="color:#00007F">Boolean</SPAN>
<SPAN style="color:#007F00">' If varTestColor is a number, assume testing for known colorindex else</SPAN><SPAN style="color:#007F00">' if string use color & colorconstants</SPAN>
TestForColor =<SPAN style="color:#00007F">False</SPAN> <SPAN style="color:#007F00">' default return value</SPAN>
<SPAN style="color:#00007F">Dim</SPAN> lngTestColor<SPAN style="color:#00007F">As</SPAN><SPAN style="color:#00007F">Long</SPAN>
strTestWhat = UCase(strTestWhat)
<SPAN style="color:#00007F">If</SPAN> strTestWhat<> "FONT" _
And strTestWhat<> "FILL"<SPAN style="color:#00007F">Then</SPAN><SPAN style="color:#00007F">Exit</SPAN><SPAN style="color:#00007F">Function</SPAN>
<SPAN style="color:#00007F">If</SPAN> IsNumeric(varTestColor)<SPAN style="color:#00007F">Then</SPAN>
<SPAN style="color:#00007F">If</SPAN> strTestWhat = "FONT"<SPAN style="color:#00007F">Then</SPAN>
TestForColor = rngCell.Font.ColorIndex = varTestColor
<SPAN style="color:#00007F">Else</SPAN>
TestForColor = rngCell.Interior.ColorIndex = varTestColor
<SPAN style="color:#00007F">End</SPAN><SPAN style="color:#00007F">If</SPAN>
<SPAN style="color:#00007F">Else</SPAN>
varTestColor = UCase(varTestColor)
<SPAN style="color:#00007F">Select</SPAN><SPAN style="color:#00007F">Case</SPAN> varTestColor
<SPAN style="color:#00007F">Case</SPAN> "BLACK"
lngTestColor = vbBlack
<SPAN style="color:#00007F">Case</SPAN> "BLUE"
lngTestColor = vbBlue
<SPAN style="color:#00007F">Case</SPAN> "CYAN"
lngTestColor = vbCyan
<SPAN style="color:#00007F">Case</SPAN> "GREEN"
lngTestColor = vbGreen
<SPAN style="color:#00007F">Case</SPAN> "MAGENTA"
lngTestColor = vbMagenta
<SPAN style="color:#00007F">Case</SPAN> "RED"
lngTestColor = vbRed
<SPAN style="color:#00007F">Case</SPAN> "WHITE"
lngTestColor = vbWhite
<SPAN style="color:#00007F">Case</SPAN> "YELLOW"
lngTestColor = vbYellow
<SPAN style="color:#00007F">Case</SPAN><SPAN style="color:#00007F">Else</SPAN>
<SPAN style="color:#00007F">Exit</SPAN><SPAN style="color:#00007F">Function</SPAN>
<SPAN style="color:#00007F">End</SPAN><SPAN style="color:#00007F">Select</SPAN>
<SPAN style="color:#00007F">If</SPAN> strTestWhat = "FONT"<SPAN style="color:#00007F">Then</SPAN>
TestForColor = rngCell.Font.Color = lngTestColor
<SPAN style="color:#00007F">Else</SPAN>
TestForColor = rngCell.Interior.Color = lngTestColor
<SPAN style="color:#00007F">End</SPAN><SPAN style="color:#00007F">If</SPAN>
<SPAN style="color:#00007F">End</SPAN><SPAN style="color:#00007F">If</SPAN>
<SPAN style="color:#00007F">End</SPAN><SPAN style="color:#00007F">Function</SPAN></FONT>
HTH