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

如何将引发的错误传递给VBA中的自定义错误处理程序?,vba,excel,Vba,Excel,我在Excel中使用VBA已经有一段时间了,我的所有过程都使用自定义错误处理程序。我第一次发现自己需要使用Err.Raise(在Select Case块中处理Case Else情况),我不知道如何将错误传递给自定义错误处理程序。VBA不会将引发的错误传递给自定义处理程序,而是弹出自己丑陋且毫无用处的错误对话框。如果有人能告诉我解决这个问题的方法,我将非常感激 下面是我正在使用的代码的一般化版本(函数/变量名已更改以保护无辜者)。gErrorHandler对象是一个全局维度的类模块变量,用于处理来

我在Excel中使用VBA已经有一段时间了,我的所有过程都使用自定义错误处理程序。我第一次发现自己需要使用
Err.Raise
(在
Select Case
块中处理
Case Else
情况),我不知道如何将错误传递给自定义错误处理程序。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
这是我得到的错误对话框,而不是将错误传递给自定义处理程序:


正如Tim在评论中指出的,答案是VBA IDE被配置为在出现所有错误时中断。将其更改为中断未处理的错误只会给我带来我想要的行为


对我有用。可能是您在VBE中的“工具>>选项>>常规”选项卡下设置了“所有错误时中断”,就是这样。谢谢你,蒂姆。