在Excel VBA以外的error handling

我知道我的标题有点混乱,但这是我的问题。 我基本上有一个function作为各种包装的工作表。 它有能力依次运行多个macros,这是通过一个用户窗体完成的。 基本上,你检查框,如果它被检查,它运行macros。 我想要做的是,如果出现错误,我希望它返回它所处的位置。

我的第一个想法是在我的if语句运行的潜艇上放置一个On Error语句的checkbox,但没有奏效,因为error handling去到被调用的子,并忽略之前的东西。

我该怎么办? 这可能吗?

你可以做这样的事情:

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