我有一个带有Let函数的类模块,它会引发一个自定义错误,示例如下所示
Private pValue As Double
Public Property Let Value(v As Double)
If v < 0 Then
Err.Raise vbObjectError + 1, "error source", "error description"
Else
pValue = v
End If
End Property
在另一个子句中,我在对象上调用类函数(示例),并通过传递小于0的值来引发错误。在同一个子句中,我设置了错误处理,以根据错误编号捕获多个错误。 / p>
Sub TestSub()
Dim Example As Test
Set Example = New Test
On Error GoTo errorHandler
Example.Value = -1
On Error GoTo 0
Exit Sub
errorHandler:
MsgBox Err.Number & "," & Err.Description & " in " & Err.Source
End Sub
消息框打印出正确的错误编号,但描述是对象的通用方法〜失败,源是通用的VBAProject。我真的很喜欢打印出我给Err.Raise的错误信息。有谁知道这里的问题是什么?我有错误处理设置打破未处理的错误。
消息框中显示的消息是:
对象'_Test'的方法'值'失败
编辑:将代码更新为发生问题的完整方案
答案 0 :(得分:0)
也无法在Windows上重现。
通过菜单Debug - Compile VBA Project
尝试“重新编译”有时它有助于解决这些奇怪的错误
答案 1 :(得分:0)
我有同样的问题。我发现当显式键入错误引发类的实例时,行为发生了变化。因此,如果将类的类型更改为variant,则应保留自定义错误消息:
Sub TestSub()
Dim Example As Variant 'use Variant instead of Test to keep your custom error message
Set Example = New Test
On Error GoTo errorHandler
Example.Value = -1
On Error GoTo 0
Exit Sub
errorHandler:
MsgBox Err.Number & "," & Err.Description & " in " & Err.Source
End Sub