要删除范围中的重复格式条件实例吗?

时间:2019-03-13 19:38:24

标签: excel vba

我想向我的文件之一添加一个formatcondition重置按钮。用户可以添加不同的格式条件,但是我希望拥有一个干净且始终有效的格式条件,该条件最初包含在文件中。我做到了,但效果并不理想。实际上,我的问题在于错误处理,我不能低估可能的错误以及如何处理它们。
我的方法
我先通过循环删除符合我的条件的条件,然后再次应用新条件。我的问题在第一部分。我尝试了每种方法的循环,然后又从头到尾进行了循环(步骤-1)。我认为没有Formula1条目的条目会引起问题。我试图通过itm.formula1 is nothing来避免它们,但是它本身显示错误!

请在下面找到代码:

Sub ResetConditionF()
Dim itm, reset As Boolean, errcnt&, i&
    If OSWRng Is Nothing Then AppSet True: reset = True
'    On Error GoTo err2
    With OSWRng
        For i = .FormatConditions.count To 1 Step -1
            Set itm = .FormatConditions(i)
            If LCase(itm.Formula1) Like "*=""closed""" _
              Or LCase(itm.Formula1) Like "*=""check""" _
              Or UCase(itm.Formula1) Like "*=""ATTN""" _
            Then
                itm.Delete
            End If
            Debug.Print .FormatConditions.count
skipp:
        Next
        With .FormatConditions.Add(xlExpression, , "=" & .Cells(1, 42).Address(False, True) & "=""ATTN""")
            .Interior.Color = rgbRed
            .Priority = 1
        End With
        With .FormatConditions.Add(xlExpression, , "=" & .Cells(1, 33).Address(False, True) & "=""Closed""")
            .Interior.Color = 8210719 'rgbBlue
            .Font.Color = vbWhite
            .Priority = 2
        End With
        With .FormatConditions.Add(xlExpression, , "=" & .Cells(1, 42).Address(False, True) & "=""Check""")
            .Interior.Color = rgbOrange
            .Priority = 3
        End With
    End With
    If reset Then AppSet False
    MsgBox errcnt
    Exit Sub

err2:
    errcnt = errcnt + 1
    Debug.Print itm.Priority
    Resume skipp
End Sub  

我还尝试了以下循环实例:

For Each itm In .FormatConditions
    If LCase(itm.Formula1) Like "*=""closed""" _
      Or LCase(itm.Formula1) Like "*""check""" _
      Or UCase(itm.Formula1) Like "*""ATTN""" _
    Then itm.Delete
Next

如果我多次运行该代码(with on error resume next),它将清除,但是为什么我必须多次运行它?我怎么了?
谢谢您的帮助。
M

0 个答案:

没有答案