我在 Excel 中使用 VBA 已经有一段时间了,我对所有程序都使用了自定义错误处理程序。我第一次发现自己处于需要使用Err.Raise
(处理块Case Else
中的情况Select Case
)的位置。我不知道如何将错误传递给自定义错误处理程序。VBA 没有将引发的错误传递给自定义处理程序,而是弹出自己的丑陋且相当无用的错误对话框。如果有人能告诉我解决此问题的方法,我将不胜感激。
下面是我正在使用的代码的通用版本(函数/变量名称已更改以保护无辜者)。该gErrorHandler
对象是一个全局维度的类模块变量,它处理来自任何和所有过程的错误。
Public Function MyFunction(dblInputParameter As Double) As Double
On Error GoTo Err_MyFunction
Dim dblResult as Double
Select Case dblInputParameter
...Several case statements go here...
Case Else
Err.Raise vbObjectError + 1000, "MyProjectName.MyObjectName", "Error Description"
End Select
MyFunction = dblResult
Exit_MyFunction:
Exit Function
Err_MyFunction:
gErrorHandler.DisplayError Err.Number, Err.Description, Erl, csModule, "basMyModuleName", "MyFunction"
Resume Exit_MyFunction
End Function
这是我得到的错误对话框,而不是将错误传递给自定义处理程序: