VBA错误处理不适用于Excel 2016

时间:2017-06-13 18:43:36

标签: vba excel-vba excel-2016 excel

我有一个奇怪的情况,即用户遇到运行时错误(预期和处理),除非在这种情况下。从我为VBA错误处理读取的所有文档中,如果子过程产生错误,则错误将通过调用堆栈渗透,直到找到具有错误处理的过程并在该级别处理该过程。如果未找到处理程序,则显示运行时错误对话窗口。所以......

    Sub ProcedureA()

Try:    

    On Error Goto Catch
    ' No error handler in ProcedureB
    ProcedureB

Catch:

    If Err.Number <> 0 then

        '  Manages error from ProcedureB

    End If

End Sub

这适用于除最近安装了Excel 2016的用户以外的所有用户(尽管2016年有其他用户没有问题)。在他的情况下,运行时错误对话窗口出现,“犯罪现场”突出显示指向ProcedureB中的语句(没有错误处理程序)。我的问题是,如果在Excel或其VBA选项中有一些设置会覆盖默认的VBA错误处理行为吗?

1 个答案:

答案 0 :(得分:3)

这不是他的Excel版本的问题。它是VBE中的一个设置。据我所知,默认情况下此功能未启用,因此您的用户启用了此设置,或者出于某种原因更改了默认设置。

要修复此设置:

  1. 打开VBE
  2. 进入工具菜单(Alt-T)
  3. 选择选项(Alt-O)
  4. 在“常规”标签下&gt;错误捕获您需要选择“在类模块中断”&#39; (这允许您查看类模块中的错误,如果它们发生。我强烈推荐这个设置。)或者&#39;打破未处理的错误&#39; (几乎相同的行为,但它在调用例程中中断,并且不允许您在类中发现错误。)
  5. 然后你应该全力以赴。发生的事情是VBE设置覆盖了错误处理行为,这对于调试很有帮助,但是当有人实际运行你的应用程序时却没那么有用。