Excel VBA应用程序自动停止,并显示消息“代码执行已停止”

时间:2010-01-28 13:15:08

标签: excel vba excel-vba

从我在网上看到的情况来看,这是一个相当普遍的抱怨,但答案似乎更少见。问题是:

我们有许多Excel VBA应用程序,可以在许多用户的计算机上完美运行。然而,在一台机器上,它们停在某些代码行上。它总是相同的线条,但这些线条似乎没有任何共同之处。

如果你在停止后按F5(运行),应用程序会继续,所以它几乎就像添加了一个断点。我们尝试从菜单中选择“删除所有中断”,甚至添加中断并再次删除它。

我们之前已经遇到过单个应用程序的这个问题,我们已经通过从模块中删除代码,编译然后将其粘贴回来等方式来提升它。

现在问题似乎与Excel本身有关,而不是单个.xls,所以我们有点不确定如何管理它。

感谢任何帮助:)

谢谢,

菲利普惠廷顿

12 个答案:

答案 0 :(得分:373)

我找到了第二个解决方案。

  1. 按下弹出窗口中的“调试”按钮。
  2. 按两次 Ctrl + Pause | Break
  3. 点击播放按钮继续。
  4. 完成后保存文件。
  5. 希望这有助于某人。

答案 1 :(得分:15)

此问题来自Office / Windows中的奇怪怪癖。

在开发了相同的VBA代码并在过去几天中运行了数百次(字面意思)后,我刚刚遇到了这个问题。唯一不同的是,在遇到这个令人困惑的问题之前,我意外地用非正统的方法结束了VBA代码的执行。

我清理了所有临时文件,重新启动等等......当我在所有这些之后再次运行代码时,我仍然遇到了问题 - 在我进入第一个循环之前。有意义的是,在弹出窗口中按“按下”调试“按钮,然后按两次[Ctrl + Break]然后再继续”不停止“,因为Office / Windows组合中的某些内容尚未发布执行。它被卡住了。

冗余的Ctrl + Break操作可能会解决延迟执行。

答案 2 :(得分:13)

一个解决方案是here

  

此问题的解决方案是添加代码行   您的第一行中的“Application.EnableCancelKey = xlDisabled”   宏..这将解决问题,您将能够执行宏   成功没有收到错误消息“代码执行已被中断”。

但是,在我插入这行代码之后,我再也无法使用Ctrl + Break了。所以它有效但不是很大。

答案 3 :(得分:5)

我发现在宏未运行时按下ctrl + break修复了问题。

答案 4 :(得分:3)

我会尝试通常的补救措施: - 在您的VBA代码上运行Rob Bovey的VBA代码清理器 - 删除用户PC上的所有插件,特别是COM和.NET插件 - 删除所有用户.EXD文件(MSoft更新不兼容) - 运行Excel检测&修复用户系统 - 检查用户的.xlb文件的大小(应该是20-30K) - 重新启动然后删除所有用户临时文件

答案 5 :(得分:2)

感谢大家的投入。通过在控制面板中选择REPAIR解决了此问题。我想这显然重新注册了Office的一些本机COM组件,并且做了REINSTALL没有的东西。我希望后者只是通过一个清单,有时接受已经安装的东西,也许。然后我在用户机器上为COM互操作注册我自己的.NET dll时遇到了一个单独的问题(尽管这也适用于其他机器)虽然我认为这是我的错误,而不是微软。再次感谢,我真的很感激。

答案 6 :(得分:2)

在开发一个复杂的Excel VBA应用程序时,我几次遇到过这个问题。有时Excel开始随机破坏VBA对象。唯一的补救措施是重启机器。重启后,Excel通常会开始正常运行。

很快我发现这个问题的可能解决方案是在宏未运行时按CTRL + Break一次。也许这对你也有帮助。

答案 7 :(得分:2)

我有这个问题也使用excel 2007和foobar.xlsm(启用宏)工作簿,只需尝试关闭右上角红色X上的工作簿就可以获得“代码执行被中断”宏运行,或任何“初始化”表单,工作簿或工作表宏。我得到的选项是“结束”或“继续”,调试始终是灰色的。我做了之前的海报建议控制面板 - >程序和功能 - >右键单击“Microsoft Office Proffesional 2007”(在我的情况下) - > change-> repair。

这解决了我的问题。 我可能会在MS更新后很快添加这个,我还在Excel中发现一个名为“Team Foundation”的Excel中的插件,我当然没有自愿安装

答案 8 :(得分:1)

我想向Stan's answer #2添加更多详细信息,原因如下:

  • 我自己多次面对这个问题,根据项目情况,我选择了stan的voodoo magic answer #1或#2。当我继续面对它时,我变得更加好奇,为什么它首先发生。

  • 我也想为Mac用户添加答案。

  • 这两种可能的答案都存在局限性:

    • 如果代码受到保护(并且您不知道密码),那么answer #1将无济于事。
    • 如果代码不受保护,则answer #2将不允许您调试代码。
  1. 可能由于以下任何原因而发生:

    • 操作系统未将系统资源分配给Excel进程。 (解决方案:需要启动操作系统 - 成功率非常低,但已知多次工作)

    • P代码是在Visual Basic(.NET之前)中使用的中间代码,因此它仍然在VBA中使用。它以更慢的执行速度为代价实现了更紧凑的可执行文件。我为什么要谈论p代码?因为它有时会在多次执行和大文件之间被破坏,或者仅仅因为安装了软件(Excel)而在某处损坏了。当p代码腐败时。代码执行不断被中断。 解决方案:在这些情况下,假设您的代码已经开始损坏,将来您的Excel工作簿也会损坏,从而为您提供“excel文件已损坏且无法打开”等消息。因此,作为一种快速解决方案,您可以根据您的要求依靠答案#1或答案#2。但是,永远不要忽视腐败的迹象。最好在记事本中复制代码模块,删除模块,保存&关闭工作簿,关闭excel。现在,重新打开工作簿并开始使用之前复制到记事本的代码创建新模块。

  2. Mac用户,请尝试以下任何选项,根据您的系统架构,操作系统和Office版本,这些选项肯定会有效

    • Ctrl + 暂停
    • Ctrl + ScrLk
    • Esc + Esc (连续按两次)
  3. 使用上述组合键将进入中断模式,因为宏暂停执行,立即完成当前任务。这是第2步的替代。

    1. 解决方案:为了克服使用answer #1answer #2的限制,我在错误处理程序中使用xlErrorHandlerResume语句错误代码为18.然后,中断作为错误发送到正在运行的过程,可由使用On Error GoTo语句设置的错误处理程序捕获。可捕获的错误代码为18.当前过程被中断,用户可以调试或结束该过程。 Microsoft请注意,如果错误处理程序具有resume语句,则不使用此方法,否则错误处理程序将始终返回到同一语句。这正是我们想要的代码执行中无意义的无意义中断。

答案 9 :(得分:0)

我目前的声誉尚不允许发布此评论。 Stans解决方案进入调试模式,按两次Ctrl + Break,播放,保存确实解决了我的问题,但我有两个意外的曲折:

  1. 我的项目结构受密码保护,因此为了进入调试模式,我必须先进入开发者模式,点击项目结构并输入密码。

  2. 我的项目是模板文件(.xmtl)。我通过双击打开文件,打开它为.xml,用#34; 1"在上一个文件名的末尾。我通过Stans指令修复了该错误并将其保存为... 1.xml文件。当我再次打开模板时,这次作为模板,并希望对该文件应用相同的错误修复,错误消失了!我没有更改此文件,仍然没有执行宏的错误。这对我来说意味着错误实际上不在文件中,而是在Excel中的(隐藏)设置中。

答案 10 :(得分:0)

如果是幻影断点:

1删除有问题的代码行

2再次运行代码

3重排该行

在花了几天时间仔细研究了这里和其他地方的所有答案之后,我发现了这个可笑的简单解决方案。我认为,如果我将其链接到我的原始问题,则可能会帮助解决其他一些较差的问题,因为它所涉及的问题是VBA break execution when there's no break key on keyboard,而且更适用。

Link to original answer

答案 11 :(得分:-1)

  

现在问题似乎与Excel本身有关

重新安装并修补它:)除此之外很难说。