首页 > 解决方案 > 当错误抛出时,我正在处理错误以跳到下一步。第一次错误工作正常,第二次抛出错误

问题描述

下面的代码在第一次错误时运行良好,但第二次抛出错误。我收到错误cn.execute(Sql)所以我想在出现错误时跳过这个并继续循环

'EXECUTION OF SQL QUERY
Application.EnableEvents = False
Application.ScreenUpdating = False
'Application.ErrorCheckingOptions.BackgroundChecking = False
    Set Sql = ws.Range("D" & m)
    On Error GoTo errHandler:
    Set Rec_set = cn.Execute(Sql) 'Issue SQL statement
    Status = Worksheets("Count").Range("B" & m).Value
    Application.StatusBar = "Table Executing :" & Status
    While Not Rec_set.EOF
    ws.Range("E" & m).CopyFromRecordset Rec_set
    Wend
    Rec_set.Close 'Close the recordset

           'FILE UPLOAD
'Mention the SHarePoint Address and directly upload into SharePoint
 ws.Range("D" & m & ":" & "E" & m).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  "" & sFolder & "/_Count_Row" & m & ".pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

    With ws
        .Hyperlinks.Add Anchor:=.Range("F" & m).End(xlUp).Offset(1, 0), _
            Address:="" & sFolder & "/Count_Row" & m & ".pdf", _
            ScreenTip:="Hyperlink", _
            TextToDisplay:="Count_Row" & m
    Application.StatusBar = "File is being uploded into SharePoint for the table :" & Status
    End With
errHandler:
Next m

Resume next我仍然抛出错误后尝试过errHandler:有人可以帮助我吗?

标签: excelvba

解决方案


如果你想避免错误Resume Next,那么你也必须清除它们。

Resume Next因此,在write之后(或之前)的行上Err.Clear。这是一些如何使用的小例子Err.Clear,虽然它看起来很像意大利面条代码:

Public Sub TestMe()

    Dim cnt As Long
    On Error GoTo TestMe_Error

    For cnt = 1 To 10
        If Err.Number = 0 Then
            If cnt Mod 2 = 1 Then
                Debug.Print cnt / 0
            Else
                Debug.Print cnt / 2
            End If
        End If
    Next cnt

    On Error GoTo 0
    Exit Sub

TestMe_Error:

    Debug.Print "Error " & Err.Number & " (" & Err.Description & ") "
    Err.Clear
    Resume Next

End Sub

推荐阅读