以下代码适用于我的工作簿中的大多数工作表:
Function IsHighlighted() As Boolean
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
Dim rUsedRange As Range
Set rUsedRange = wks.UsedRange
With rUsedRange
Dim bHighlighted As Boolean
Dim fc As Object
For Each fc In .FormatConditions
If fc.Interior.Color = RGB(255, 0, 0) And fc.Font.Color = RGB(255, 255, 0) Then
bHighlighted = True
Exit For
End If
Next fc
If bHighlighted = True Then
Exit For
End If
End With
Debug.Print (wks.Name & "," & rUsedRange.FormatConditions.count)
Next wks
IsHighlighted = bHighlighted
End Function
但是我的一些工作表包含图标集。
显然:
FormatConditions
集合包括FormatCondition
,DataBar
,AboveAverage
,ColorScale
,UniqueValues
,Top10
和IconSetCondition
个对象,而不仅仅是FormatCondition
个对象。
有关更多上下文,请参阅:For each fc in range.formatconditions fails. Why?
其中一些没有.Interior.Color
所以if语句会抛出错误。
有什么好方法我可以跳过formatconditions集合中不属于formatcondition类型的所有这些对象?
我尝试使用VarType(fc)
来确定obejct类型,但它只返回一个9,表示fc
是某种对象。
答案 0 :(得分:1)
您是否尝试过Typename函数, 例如:
Dim str as string.
Msgbox Typename(str) ' ->>> "String"