VBA-错误转到错误处理程序时:
我有一个关于VBA中错误处理的简单问题。 我知道如何使用VBA-错误转到错误处理程序时:,vba,error-handling,Vba,Error Handling,我有一个关于VBA中错误处理的简单问题。 我知道如何使用On Error GoTo ErrHandler语句,但我宁愿使用预制的VBA消息,而不是在指定的标签上使用我自己的代码。C#中的类似内容: 在错误处理程序代码中,您可以访问Err.Number和Err.Description。在没有错误处理的情况下,您可能会看到错误消息中的描述,因此它相当于代码示例中的ex.message。创建一个ErrorHandler模块并将此子模块放入其中 Public Sub messageBox(moduleN
On Error GoTo ErrHandler
语句,但我宁愿使用预制的VBA消息,而不是在指定的标签上使用我自己的代码。C#中的类似内容:
在错误处理程序代码中,您可以访问
Err.Number
和Err.Description
。在没有错误处理的情况下,您可能会看到错误消息中的描述,因此它相当于代码示例中的ex.message
。创建一个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
我使用模块作用域常量来保存模块名称。
修改以满足您的需要。不客气。vba中的错误处理是一个难题。大量重复的代码。很难看。欢迎来到SO。谢谢@DanWagner。如果我能在运行时自动获取过程名就好了。。。。
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