VBA - 错误GoTo ErrHandler:

时间:2014-05-15 20:26:21

标签: vba error-handling

我有一个关于VBA中错误处理的简单问题。 我知道如何使用On Error GoTo ErrHandler语句,而是在指定的标签上使用我自己的代码,我宁愿使用预制的VBA消息。在C#中有类似的东西:

catch(Exception ex){
    Console.Writeline(ex.Message);
}

2 个答案:

答案 0 :(得分:3)

创建一个ErrorHandler模​​块并将此子文件放入其中。

Public Sub messageBox(moduleName As String, procName As String, Optional style As VbMsgBoxStyle = vbCritical)
    MsgBox "Module: " & moduleName & vbCrLf & _
        "Procedure: " & procName & vbCrLf & _
        Err.Description, _
        style, _
        "Runtime Error: " & Err.number
End Sub

从项目的任何位置调用它。

Private sub Foo()
On Error GoTo ErrHandler

'do stuff

ExitSub:
    ' clean up before exiting
    Exit Sub
ErrHandler:
    ErrorHandler.messageBox "ThisModuleName","Foo"
    Resume ExitSub
End Sub

我使用模块作用域常量来保存模块名称。 修改以满足您的需求。

答案 1 :(得分:0)

在错误处理程序代码中,您可以访问Err.NumberErr.Description。您将看到的错误消息中的描述没有错误处理,因此相当于代码示例中的ex.Message