为什么我的VBA过程有时会在调试模式下停止?

问题描述

我在Access窗体中有一个按钮单击事件,有时会打开VBA编辑器,突出显示“ On Error ...”行,就像它处于调试模式一样。我可以按F5继续其余的步骤,并且工作正常。

这并非每次都发生。似乎是随机的,除了似乎有一种模式,即在打开文件后立即单击此按钮时会发生这种情况。并非每次都如此。

对于这种或以前的经历是否有相同的事情以及随后的解决方案有何想法?是什么原因造成的?这是糟糕的用户体验。

解决方法

好,在运行任何代码之前(在启动过程中按住Shift键可防止任何代码运行)。

现在,按Ctrl-g(跳至VBA IDE)。现在从工具开始。选择 debug->清除所有断点

赞:

enter image description here

现在,打开任何代码模块-按Enter键以“清除”代码。现在选择debug-> Compile(第一个菜单选项)。会显示“我的应用名称”。

确保代码可以编译。如果没有,那么杂散的断点仍然会存在。

接下来,您需要检查/更改错误的默认行为。

在VBA编辑器/ IDE中仍然保持不变

从菜单栏中选择工具->选项。默认值为“打破未处理的错误”

如果您在所有错误上都没有休息?那么,即使假定为陷阱甚至出错的代码也将恢复下一个代码,然后炸开并停止。开发人员通常会说尝试在集合中存在,而我们错误地点击以“表示”该列表中没有的元素。但是,THIS假定默认的错误陷阱设置未更改。

因此,请再次检查,然后再三遍检查此设置。您可以开发多年,甚至拥有一些错误代码ASSUME。但是那年的开发代码假定使用默认代码(如果遇到未处理的错误,则会中断代码。如果您遇到了所有错误,那么您就敬酒了,您会发现各种各样的代码破坏代码。(该选项的目的是让您调试代码具有错误处理功能而不必禁用错误。接着,如果出现错误提示,您实际上将无法再调试部分代码。

现在,如果上述步骤不能解决您的问题?

然后下一步是反编译您的应用程序。这将删除应用程序的已编译(二进制)部分。完成此操作后,便会进行完全重新编译。

要反编译,您不能在IDE中执行此操作,并且必须使用FULL限定路径访问现有版本的访问。这样说:

"C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE"
"c:\MyCoolApp\Invoice.accDB" /decompile

现在,当您在上面运行时,您实际上绝对不能运行任何启动表单或代码。 (按住Shift键。现在退出访问/应用程序。现在重新启动(再次没有任何代码可在启动时运行)。

现在,在这一点上,我强烈建议执行Compact +修复(并且同样不要启动或运行代码)。因此,即使在C + R上,也必须按住Shift键。

如果您在反编译期间启动应用程序,则C + R允许运行任何代码,然后您必须在反编译的第一步重新开始。

好的,现在您完成了C + R。现在是ctrl-g,现在是debug-compile。