Excel 类调试中引发的错误,如同在属性调用时引发一样

Excel 类调试中引发的错误,如同在属性调用时引发一样,excel,excel-2000,vba,Excel,Excel 2000,Vba,不幸的是,我正在用Excel2000VBA开发一个应用程序。我相信我已经发现,在自定义类属性、函数或子类中出现的任何错误都会像在VBA代码中调用该属性的点上出现的错误一样进行调试。也就是说,VBE调试器不会将我带到类属性中发生错误的位置,而是第一次输入属性的位置(例如,从模块子模块或函数)这使得开发比最浅显的OOExcel2000VBA代码更令人沮丧,因为我必须逐行遍历每个类方法,以发现导致错误的指令 我是否遗漏了一些东西,或者这是我必须在Excel2000中处理的已知错误?这是在2003年还是

不幸的是,我正在用Excel2000VBA开发一个应用程序。我相信我已经发现,在自定义类属性、函数或子类中出现的任何错误都会像在VBA代码中调用该属性的点上出现的错误一样进行调试。也就是说,VBE调试器不会将我带到类属性中发生错误的位置,而是第一次输入属性的位置(例如,从模块子模块或函数)这使得开发比最浅显的OOExcel2000VBA代码更令人沮丧,因为我必须逐行遍历每个类方法,以发现导致错误的指令

我是否遗漏了一些东西,或者这是我必须在Excel2000中处理的已知错误?这是在2003年还是2007年修复的

示例代码:


这个“功能”在Excel 2003中是相同的,如果在2007年有所不同,我会感到惊讶。

对于Office 2003,当调试器被配置为在未处理的错误时中断(默认配置)时,您将得到这种行为

如果希望它在Err.Raise行中断,则需要将其配置为在所有错误时中断(工具/选项/常规/错误捕获/在所有错误时中断)


我相信Office 2000也一样,但没有副本可供检查。

此页面是有关VBA中错误处理的非常好的资源:


在Excel 2010中仍然如此——这就是我遇到这种行为的地方

引述:

除了类模块中断之外,绝对没有理由使用错误捕获设置

他对错误模式之间差异的描述:

在测试和运行代码时,有三种错误捕获模式。第一个是对所有错误进行中断。这将导致调试器在发生任何错误时打开,而不考虑代码中可能存在的任何错误处理。第二个选项是未处理错误时中断。如果错误未由现有On error指令处理,这将导致调试器打开。这是最常用的选项,也是默认设置。第三个选项,中断类模块是最重要也是使用最少的。这不是默认的错误捕获模式,因此必须手动设置

类模块中断是最重要的,因为它将导致调试器在实际导致问题的对象模块内的代码行中断。“打断类模块”设置位于“工具”菜单上可访问的“选项”对话框中。它位于“选项”对话框的“常规”选项卡上,如下所示


这个“功能”听起来更像是鼓励购买VisualStudio的一种策略。唉。谢谢我认为微软已经故意忽略VBA大约10年了,而支持.Net等。他们只是没有得到VBA在日常业务中增加的价值。这是相同的功能。实际上是同一个代码。已经有十年了。似乎有太多的稳定性,谢谢!实际上,在三个选项中(全部中断、类中断和未处理错误中断),类中断是我想寻找的。你确定没有理由吗?据我所知,使用建议的设置,
Err.Raise
不能在类中使用。
'''''''''''''''
'In Module1:

Public Sub TestSub1()
    Dim testClass As Class1
    Dim testVariant As Variant
    Set testClass = New Class1
    testVariant = testClass.Property1 'Debugger takes me here...
End Sub

''''''''''''''
' In Class1

Property Get Property1() As Variant
    Err.Raise 666, , "Excel 2000 VBA Sux!" 'But error is actually thrown here.
End Property