我有一个非常简单的VBA代码,应该尝试打开一个不存在的文件,将我发送到错误处理程序,然后在无限循环中(有意地)返回我的代码。

但是,编译器仅在第一次捕获错误,然后在第二遍中断。

我尝试了On Error语句的每种组合,以在第二遍将其发送回去,但是似乎没有任何效果。
这是代码:

Sub TestError()
    On Error GoTo errError
lblError:
    On Error GoTo errError
    'Code that should raise an error and send to errError
    Excel.Application.Workbooks.Open ("lakdfjldkj")
    Exit Sub
errError:
    MsgBox "Code didn't break"
    GoTo lblError
End Sub


是否有我想念的东西,或者这是一个错误?

除非您必须杀死Excel或添加额外的循环条件,否则请不要进行此测试

最佳答案

使用Resume可以...在错误处理程序之后恢复处理。

Sub TestError()
    On Error GoTo errError

    'Code that should raise an error and send to errError
    Excel.Application.Workbooks.Open "lakdfjldkj"
    Exit Sub
errError:
    MsgBox "Code didn't break"
    Resume
End Sub


我已经使用过这样的代码来访问某个工作表,如果找不到该工作表,则错误处理程序将使用正确的名称创建一个工作表,然后继续进行处理。

10-07 15:37