如何将引发的错误传递给VBA中的自定义错误处理程序?

Lok*_*rim 8 excel vba excel-vba

我已经在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
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误对话框,而不是将错误传递给自定义处理程序:

在此输入图像描述

Lok*_*rim 8

正如蒂姆在评论中指出的那样,答案是VBA IDE配置为打破所有错误.改变它以打破未处理的错误只给了我想要的行为.

在此输入图像描述