2015-02-11 76 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