2016-09-01 3 views
1

Я знаю, что мой заголовок немного запутан, но в этом проблема. У меня в основном есть один лист, который функционирует как оболочка. Он имеет возможность запускать множество макросов последовательно, что выполняется через Userform. В основном, вы установите флажок, если он установлен, он запускает макрос. То, что я пытаюсь сделать, - если есть ошибка, я хочу, чтобы он возвращал либо то, что было в нем.Обработка ошибок в Excel VBA Вне Sub

Моя первая идея была в инструкции my if для флажков, которые запускают субтитры, чтобы установить On Ошибка, но это не сработало, так как обработка ошибок переходит к тому, что вызывается и игнорирует то, что перед ним.

Что мне делать? Это возможно?

+0

Если вызываемая суб обрабатывает ошибку, нет ничего, что вы можете сделать. Если вызываемый sub позволяет вам увидеть ошибку, вы можете обрабатывать ее, как если бы она была поднята вашим кодом. Я не вижу, в чем проблема. – GSerg

ответ

6

Вы могли бы сделать что-то вроде этого:

Sub ErrorHandler() 
    On Error GoTo ErrHandler 
    Call Proc1 
    Call Proc2 
    Call Proc3 
    Exit Sub 
ErrHandler: 
    MsgBox Err.Source & vbCrLf & Err.Description 
End Sub 


Sub Proc1() 
    On Error GoTo ErrHandler 
    ' Your code block start 

    ' Your code block end 
    Exit Sub 
ErrHandler: 
    Err.Raise 513, "Proc1", "Customer Error Message 1|" & Err.Description 
End Sub 


Sub Proc2() 
    On Error GoTo ErrHandler 
    ' Your code block start 

    ' Your code block end 
    Exit Sub 
ErrHandler: 
    Err.Raise 513, "Proc2", "Customer Error Message 2|" & Err.Description 
End Sub 


Sub Proc3() 
    On Error GoTo ErrHandler 
    ' Your code block start 

    ' Your code block end 
    Exit Sub 
ErrHandler: 
    Err.Raise 513, "Proc3", "Customer Error Message 3|" & Err.Description 
End Sub 
Смежные вопросы