Необходимо предварительно сбросить обработчик ошибок с помощью On Errro Goto -1
, т. Е.
Sub ErrorTestMultiple()
Test1:
On Error GoTo ErrHandler1
y = 6 / 0
GoTo Test2
ErrHandler1:
Cells(4, "H") = "Test 1 failed"
Cells(4, "I") = Err.Description
Test2:
On Error GoTo -1
On Error GoTo ErrHandler2
y = 6 / 0 ' Process stop here - Why is the 2nd Error handler not working?
GoTo Test3
ErrHandler2:
Cells(5, "H") = "Test 2 failed"
Cells(5, "I") = Err.Description
Test3:
End Sub
Но это не очень хорошая практика . Далее читаем здесь
PS Вы можете изменить структуру приведенного выше кода следующим образом
Sub ErrorTestMultiple()
Dim y As Double
On Error GoTo ErrorHandler
y = 6 / 0
y = 6 / 0
Exit Sub
ErrorHandler:
Dim j As Long
j = j + 1
Cells(3 + j, "H") = "Test " & j & " failed"
Cells(3 + j, "I") = Err.Description
Resume Next
End Sub