Word VBA未处理错误未显示消息

时间:2014-03-05 11:58:32

标签: vba ms-word

我有一个带VBA的Word模板。

我需要在任何地方使用“On Error Resume Next / On Error Goto 0”处理我的错误,对可能失败的集合进行调用,比如说,或者是一个完整的错误处理程序(On Error Goto label:/ Resume) exit_label:)

工具选项设置为“未处理错误中断”

我发现对于这个模板(似乎只是看起来),没有报告未处理的错误。 VBA代码在没有告诉用户任何内容的情况下停止运行。

我已尝试导出所有VBA模块/表单,将模板保存为.dotx,关闭并重新打开,然后再次保存为.dotm并重新添加代码,但同样的问题仍然存在。

此客户端的其他模板工作正常。故意添加删除不存在的书签会导致显示错误。 iffy模板会忽略相同的删除调用但代码停止运行,因此它不会执行Resume Next。

如果我向相关程序添加完整的错误处理程序,则会出错并通过我的msgbox代码进行报告。

在某些方面,这无关紧要,在任何我希望错误是我处理它们的可能性的地方但是我有一定数量的代码来处理标题中的图像并且它们容易出错。此时我希望代码在发生错误的地方出错,这样我就可以分析如何解决错误,只是告诉用户不会让模板工作。我现在所拥有的是“死亡”代码,如果不加载大量调试语句并查看它们停止的位置,很难跟踪到哪里。

有没有人见过这样的东西?我是否可以为此模板设置一些内容,以告诉它未处理未处理的错误?

同一台机器上的其他模板错误地发生错误。

模板非常复杂,所以我无法从头开始制作。打开VBA并将其取回并没有解决它。如果必须的话,我可以为所有程序添加处理程序,但这不应该是必要的,因为一旦我收紧代码就不会发生错误。

任何帮助真的很感激 - 几天后我觉得这只是VBA在处理图像时死亡,现在我真的比这更通用了。

1 个答案:

答案 0 :(得分:0)

确定。我找到了问题的根源。

我在各种项目中使用了几个标准程序来传达繁忙/不忙于用户 - 我们称之为InterfaceOn和InterfaceOff。他们改变光标,关闭屏幕更新等等。

Off proc的一行是“Application.EnableCancelKey = wdCancelDisabled”。

我没有意识到这条线有多严重,它似乎阻止了报告错误并且代码就死了。它的帮助警告它是有风险的,但没有明确声明它将在未处理的错误上杀死VBA。

InterfaceOn过程具有反转EnableCancelKey限制的行。

这些程序使用了很多,所以我很惊讶这个问题以前没有出现过。暂时删除了EnableCancelKey行。这个项目没有特别需要那么引人注目。