在Sub.之外的Excel VBA中的错误处理

1 macros excel vba excel-vba

我知道我的头衔有点令人困惑,但这就是我遇到的问题.我基本上有一张表作为各种包装.它能够顺序运行大量宏,这是通过Userform完成的.基本上,你选中复选框,如果选中它,它会运行宏.我想要做的是,如果有错误,我希望它返回它所在的子目录.

我的第一个想法是在我的if语句中运行sub以放置On Error语句,但是这不起作用,因为错误处理转到被调用的sub并忽略它之前的内容.

我该怎么办?这可能吗?

Coo*_*ikh 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
Run Code Online (Sandbox Code Playgroud)