VBA - For循环中的错误

时间:2017-05-18 19:24:19

标签: vba excel-vba excel

我在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次{%}}次。请分享您的想法。

1 个答案:

答案 0 :(得分:4)

在此特定案例中,Dim Present As Variant并使用Application.Match代替WorksheetFunction.MatchApplication.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

这可以避免使用大量的GoToResume语句对您的代码进行分析,这些语句很难遵循&amp;排除故障。

我也是cleaned up your code a little bit to avoid relying on Activate