Excel VBA App自发停止,并显示消息“代码执行已暂停”


150

从我在网上看到的情况来看,这是相当普遍的投诉,但答案似乎很少。问题是这样的:

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

如果在暂停后按F5键(运行),该应用程序将继续运行,因此几乎就像已添加了一个断点。我们尝试从菜单中选择“删除所有休息时间”,甚至添加一个休息时间并再次将其删除。

我们以前在单个应用程序中遇到过这个问题,我们通过从模块中剪切代码,进行编译,然后将其粘贴回等方式来“合并”它。

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

任何帮助将不胜感激:)

谢谢,

菲利普·惠廷顿


2
用户是否在任何处理过程中按Escape键?还是其他任何发送转义密钥的应用程序?
shahkalpesh 2010年

1
选择“ 删除所有断点”后,是否还重新编译并保存了VBA项目?我已经在Word VBA中看到一个相关的问题,其中以前删除的断点仍然会引起中断。
Dirk Vollmar,2010年

shahkalpesh在执行过程中什么都没有处理。Divo-谢谢,我可能未按该顺序尝试过。现在就这样做...
Phil Whittington

除了divo的注释外,注释掉相关的行以及任何会停止调试的行也会很有用,然后可以将它们取消注释,并重新编译代码(再次)。
Fionnuala

我忘了提及:为了真正触发重建,通常需要修改一行,然后将光标移到下一行以将源代码标记为已修改(例如,进行更改,向下移动光标,移动向上移动光标并手动撤消更改)
Dirk Vollmar,2010年

Answers:


405

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

  1. 在弹出窗口中按“调试”按钮。
  2. Ctrl+ Pause|Break两次。
  3. 点击播放按钮继续。
  4. 完成后保存文件。

希望这对某人有帮助。


12
+1:哇,这篇文章使我摆脱了痛苦的世界。一个奇异问题的非常出乎意料的解决方案。两次按[Ctrl + Break]并继续后,我保存了文件。之后,当我关闭并重新打开文件时,问题不再出现。
dbenham

28
如果答案应该得到支持,就是这样。好答案。
The_Barman

4
这对我很有帮助。这个答案应得1000票。在过去的4-5天内,这个问题困扰着我。这工作得很好。
demouser123 2014年

25
有谁知道为什么这样做?或它来自哪里?这是魔术吗?
ZX9 2015年

4
2017年仍在帮助我。谢谢!
平板

16

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

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

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

多余的Ctrl + Break动作可能会解决延迟执行的问题。


14

一种解决方案在这里

该问题的解决方案是在宏的第一行中添加代码行“ Application.EnableCancelKey = xlDisabled”。这将解决问题,并且您将能够成功执行宏而不会收到错误消息“ Code”。执行已被中断”。

但是,在插入此行代码之后,我再也无法使用Ctrl + Break了。因此它有效,但效果不佳。


谢谢,斯坦(Stan)-如果您承受时间压力,只是想让它运行,那肯定是一个解决方案!很有用。
Phil Whittington

1
您可以通过将其设置为来在同一执行中重新启用它xlInterrupt。(它也将在代码执行完成时自动重新启用。)您的其他答案对我有用,但是最坏的情况下,它可以用作临时解决方法。有关Application.EnableCancelKey的详细信息
Kodithic,2015年

2
正确答案-也是唯一正确答案-以上。插入任何一行代码,包括“ Application.EnableCancelKey = xlDisabled”,仅会将问题转移到另一行。通常,新的“断点”恰好是您插入的行。我不拒绝您的答案的唯一原因是,在过去的十年中,我一直反复使用自己的答案。
Nigel Heffernan

6

我发现在宏未运行时按ctrl + break可以解决此问题。


3

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


2

感谢大家的投入。通过在“控制面板”中选择“修复”可以解决此问题。我猜想这显式地重新注册了Office的本机COM组件,并且做了REINSTALL没做的事情。我希望后者只是通过一个检查表,有时会接受已经安装的内容,也许。然后,我在用户的计算机上注册了自己的.NET dll以进行COM互操作时遇到了一个单独的问题(尽管这也适用于其他计算机),尽管我认为这是我的错误而不是Microsoft的错误。再次感谢,我非常感谢。


2

在开发一个复杂的Excel VBA应用程序期间,我几次遇到此问题。有时,Excel开始相当随机地破坏VBA对象。唯一的解决方法是重新启动计算机。重新启动后,Excel通常开始正常运行。

很快我发现,此问题的可能解决方案是在宏未运行时按CTRL + Break。也许这也可以为您提供帮助。


2

我也遇到了这个问题,也将excel 2007与foobar.xlsm(启用了宏的)工作簿一起使用,通过简单地尝试关闭右上角红色X上的工作簿,而没有运行宏,它将得到“代码执行已被中断”全部或任何“初始化”表单,工作簿或workheet宏。我得到的选项是“ End”或“ Continue”,Debug始终显示为灰色。我像以前的海报一样建议“控制面板”->“程序和功能”->右键单击“ Microsoft Office Proffesional 2007”(在我的情况下)->“更改”->“修复”。

这为我解决了问题。我可能会补充说,这是在MS更新后不久发生的,而且我还从Microsoft的Excel中找到了一个名为“ Team Foundation”的加载项,我当然不是自愿安装的


1

由于以下原因,我想在Stan的 答案2中添加更多详细信息:

  • 我本人多次面对这个问题,根据项目条件,我选择了斯坦的伏都教魔术答案#1或#2。当我再次面对它时,我变得更加好奇为什么它会首先出现。

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

  • 这两个可能的答案都有局限性:

    • 如果代码是受保护的(并且您不知道密码),那么回答#1将无济于事。
    • 如果代码不受保护,则答案2将不允许您调试代码。

  1. 可能由于以下任何原因而发生:

    • 操作系统未为Excel进程分配系统资源。(解决方案:只需要启动操作系统就可以了-成功率很低,但是已经知道可以工作很多次了)

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

  2. Mac用户,请尝试以下任何一种方法,它们中的任何一种都将根据您的系统架构(例如OS和Office版本)正常运行

    • Ctrl + Pause
    • Ctrl + ScrLk
    • Esc+ Esc(连续按两次)

您将使用上述按键组合进入中断模式,因为宏会立即终止执行并立即完成当前任务。这是步骤2的替换。

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


0

我目前的名声不允许将此发表为评论。施坦解决方案进入调试模式,按两次Ctrl + Break,继续播放,保存确实解决了我的问题,但是我有两个意外的转折:

  1. 我的项目结构受密码保护,因此,要进入调试模式,我必须首先进入开发人员模式,单击项目结构并输入密码。

  2. 我的项目是模板文件(.xmtl)。我通过双击打开了文件,该文件以.xml格式打开,在前一个文件名的末尾带有“ 1”。我按照Stans指令修复了该错误,并将其另存为... 1.xml文件。当我再次打开模板时,这次是作为模板,并且想要对该文件应用相同的错误修复程序,那么该错误就消失了!我没有更改此文件,并且在执行宏时仍然没有错误。对我来说,该错误实际上不在文件中,而是在Excel中的(隐藏)设置中。


-1

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

重新安装并修补它:)其他则很难分辨。


我们尝试重新安装,尽管在支持人员完成任务后用户“忘记”重新引导。我试图避免重新安装Office,但这可能是不可避免的...谢谢
Phil Whittington 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.