为什么VBA停止如果EnableCancelKey没有禁用

可能重复:
Excel VBA应用程序自动停止并显示消息“代码执行已被暂停”

为什么VBA执行在代码中的随机点停止,并且消息“代码执行已被中断”,除非已经指定了以下内容:

Application.EnableCancelKey = xlDisabled 

代码中的停止与Ctrl + Break键相似,因此禁用取消键(Ctrl + Break)可避免执行中的停止。

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

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

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