当一个没有On Error语句的函数内部发生错误时,我认为它应该冒泡到第一个带有On Error语句的调用父函数,但由于某种原因,它不起作用,我不知道为什么。
下面的代码是一个最小可重复的示例。它除了显示错误之外什么也不做。程序中有3个文件:
1.在ThisWorkbook文件中的Workbook_Open()函数中,我有以下代码:
Public Sub Workbook_Open()
On Error GoTo wtf
Stop
Dim f As New Factory
Call f.createM_DateWithObject(Now)
MsgBox "A"
Exit Sub
wtf:
MsgBox "B"
End Sub
字符串
1.第一个类叫做Factory,它只包含:
Public Sub createM_DateWithObject(ByVal dateObj As Date)
'intentional error
Dim x As Integer
x = "asd"
End Sub
型
1.然后我有我的第二个M_Date类:
Option Explicit
Option Base 0
'ini the object using a date
Public Sub iniWithObject(ByVal dateObj As Date)
'does nothing
End Sub
型
唯一的OnError语句在Workbook_Open()中,但是当我运行代码时,它在x =“asd”处停止
的数据
为什么错误没有冒泡到Workbook_Open(),我可以在那里捕获它?
谢了,杰夫
1条答案
按热度按时间iyr7buue1#
Excel的VBE包括用于类模块错误处理的选项。因此,请检查工具下的选项|选项。您不应启用 * 在类模块中中断 * 的选项
的数据