Я обрабатываю ошибку, чтобы перейти к следующему шагу при возникновении ошибки. В первый раз ошибка работает нормально, Ошибка второго раза - PullRequest
0 голосов
/ 22 мая 2018

приведенный ниже код работает отлично при первой ошибке, но выдает ошибку во второй раз. Я получаю ошибку при 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: все еще выдает ошибку Может кто-нибудь помочь мне здесь?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Я использовал приведенный ниже код и работал нормально:

errHandler:
On Error GoTo -1
Next M

Спасибо всем за ваш вклад.

0 голосов
/ 22 мая 2018

Если вы хотите избежать ошибок с Resume Next, то вам также необходимо их очистить.

Таким образом, в строке после (или до) Resume Next напишите 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...