[vba]Код
Sub ajhf()
Next_i:
On Error GoTo ErrorHendler1
i = 2 / 0
a = 2
b = 3
ErrorHendler1:
'On Error GoTo 0
Resume Next_i 'GoTo Next_i
End Sub
[/vba]
конструкция On Error GoTo ErrorHendler1 обеспечивает переход в обработчик ошибок, находящийся после метки ErrorHendler1
вернуться в основную часть кода (в нормальный режим) из обработчика можно только посредством инструкции Resume, GoTo просто перенаправляет выполнение, не меняя статуса выполнения
[vba]Код
Sub ajhf()
On Error GoTo ErrorHendler1
i = 2 / 0
ErrorHendler1:
' обработчик ошибок
Debug.Print Err.Description
' это уже не будет работать, попытка включения новой обработки ошибок из обработчика ошибок
On Error GoTo ErrorHendler2
i = 2 / 0
ErrorHendler2:
End Sub
[/vba]
а так можно:
[vba]Код
Sub ajhf()
On Error GoTo ErrorHendler1
i = 2 / 0
ErrorHendler1:
' обработчик ошибок
Resume lblExitErrH1 ' выходим из обработчика 1
lblExitErrH1:
' будет работать
On Error GoTo ErrorHendler2
i = 2 / 0
ErrorHendler2:
End Sub
[/vba]