【发布时间】:2017-10-02 15:34:56
【问题描述】:
我试图在 Excel VBA 的错误处理程序中运行错误处理程序,但第二个错误处理程序从未运行。它只是给我一个错误信息。这是我的代码。
Sub func()
On Error GoTo error1
'code
Exit Sub
error1:
On Error GoTo error2
'code
Resume Next
error2:
'code
Resume Next
基本上,该函数可能会遇到 2 个可能的错误。我尝试运行代码,如果遇到错误,它会尝试修复 error1,如果失败,则 error2 将修复它。调试适用于 error1,但如果 error2 是问题所在,代码就会失败。
【问题讨论】:
-
我认为这是因为您还没有处理第一个错误,而且我不确定
On Error在程序主体之外是否能正常工作。但是,这么说 - 在你的Error1:标签之后添加On Error GoTo -1,看起来它会继续到Error2。在我的测试中,我将Debug.Print 1/0放在您的第一个错误陷阱中,它跳转到Error2,然后由于Resume Next而返回,然后再次运行Error2,因为这就是代码流程的工作原理...... -
@DarrenBartrup-Cook Yuck!一旦你将它添加到你的代码中,我认为你有麻烦了!
-
@Rory 是的,不能不同意这一点。几个月前才发现将其设置为-1,但看不到使用它的理由。我更喜欢一开始就尝试阻止代码跳转到错误例程 - 只有当它是我没有考虑的错误时。
-
我试过了,它跑了四次 error2
-
您对如何处理 2 个潜在错误有任何建议
标签: excel error-handling vba