我想向我的文件之一添加一个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