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

时间:2016-09-01 20:57:41

标签: excel vba excel-vba macros

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

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

我该怎么办?这可能吗?

1 个答案:

答案 0 :(得分: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