我有一个奇怪的情况,即用户遇到运行时错误(预期和处理),除非在这种情况下。从我为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错误处理行为吗?
答案 0 :(得分:3)
这不是他的Excel版本的问题。它是VBE中的一个设置。据我所知,默认情况下此功能未启用,因此您的用户启用了此设置,或者出于某种原因更改了默认设置。
要修复此设置:
然后你应该全力以赴。发生的事情是VBE设置覆盖了错误处理行为,这对于调试很有帮助,但是当有人实际运行你的应用程序时却没那么有用。