2011-05-17 147 views
1

可能重复:
Excel VBA App stops spontaneously with message “Code execution has been halted”为什么VBA停止,如果EnableCancelKey没有被禁用

为什么VBA执行停止在任意点与消息的代码中“执行代码已被中断“除非以下已被指定:

Application.EnableCancelKey = xlDisabled 

在c停止ode类似于Ctrl + Break键,因此禁用取消键(Ctrl + Break)可避免执行中的停止。

但是,禁用取消密钥对我来说是一个坏主意,因为我的代码中的某些场景可能导致无限循环(例如,如果OLE请求从未完成),其中使用Ctrl + Break的能力是无价之宝。

我不太喜欢将EnableCancelKey设置为xlErrorHandler。如果我能够理解代码中断的原因并避免它,而不是改变取消密钥的行为,那将会更好。

回答

6

这很可能是编译时创建的p代码的损坏。有些人通过从调试菜单中选择清除所有断点取得了成功。坚如磐石的方法是导出所有模块,删除它们,然后重新导入它们。这种通过纯文本的往返行程会强制完成p代码的重建。 Google为Rob Bovey的Code Cleaner提供了一个免费的实用程序,可以自动执行此过程。

+1

本周我第一次使用了Rob Bovey的CodeCleaner工具,我可以证明它易于安装和使用简单 – 2011-05-17 18:04:43