2015-02-11 37 views
1

下面的代码适用于大多数表在我的工作簿:忽略格式条件集合中不是格式条件的项目?

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收集包括FormatConditionDataBarAboveAverageColorScaleUniqueValuesTop10IconSetCondition对象,不只是FormatCondition对象。 有关更多上下文,请参阅:For each fc in range.formatconditions fails. Why?

其中一些没有.Interior.Color,因此if语句会引发错误。

什么是一种很好的方式,我可以跳过格式条件集合中所有这些类型为formatcondition的对象?

我尝试使用VarType(fc)来确定obejct类型,但它只能回退一个9,它表示fc是某种对象。

回答

1

你尝试TypeName函数, 例如:

Dim str as string. 
Msgbox Typename(str) ' ->>> "String" 
+0

出于某种原因,我没有得到它的工作时,我尝试过。但它效果不错 – user1283776 2015-02-11 18:49:42

+0

很高兴成为服务。 – 2015-02-11 18:54:42