我有一个关于VBA中错误处理的简单问题。
我知道如何使用On Error GoTo ErrHandler
语句,而是在指定的标签上使用我自己的代码,我宁愿使用预制的VBA消息。在C#中有类似的东西:
catch(Exception ex){
Console.Writeline(ex.Message);
}
答案 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.Number
和Err.Description
。您将看到的错误消息中的描述没有错误处理,因此相当于代码示例中的ex.Message
。