Excel VBA为什么不会错误冒泡到调用带有错误处理程序的函数?

iqih9akk  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(79)

当一个没有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(),我可以在那里捕获它?
谢了,杰夫

iyr7buue

iyr7buue1#

Excel的VBE包括用于类模块错误处理的选项。因此,请检查工具下的选项|选项。您不应启用 * 在类模块中中断 * 的选项


的数据

相关问题