我在for循环中有一个OnError
方法。我在第二次使用OnError时遇到错误。
这是我的代码,
For i = lastrow To 2 Step -1
Sheets(TabName2).Activate
CombinedKeyVal = Range(CombinedKeyColLet & i).Value
On Error GoTo Jumpdelete
Present = WorksheetFunction.Match(CombinedKeyVal, Sheets(TabName1).Columns(6), 0)
If Present <> "" Then
GoTo Jumpdontdelete
End If
Jumpdelete:
Sheets(TabName2).Activate
Rows(i & ":" & i).Delete
Jumpdontdelete:
Next
我如何处理n
次{%}}次。请分享您的想法。
答案 0 :(得分:4)
在此特定案例中,Dim Present As Variant
并使用Application.Match
代替WorksheetFunction.Match
。 Application.Match
函数在不提出错误的情况下返回错误(这就是您需要指定为Variant
类型的原因):
Dim Present As Variant
For i = lastrow To 2 Step -1
CombinedKeyVal = Sheets(TabName2).Range(CombinedKeyColLet & i).Value
Present = Application.Match(CombinedKeyVal, Sheets(TabName1).Columns(6), 0)
If IsError(Present) Then
Sheets(TabName2).Rows(i & ":" & i).Delete
End If
Next
这可以避免使用大量的GoTo
和Resume
语句对您的代码进行分析,这些语句很难遵循&amp;排除故障。
我也是cleaned up your code a little bit to avoid relying on Activate
。