从我在网上看到的情况来看,这是一个相当普遍的抱怨,但答案似乎更少见。问题是:
我们有许多Excel VBA应用程序,可以在许多用户的计算机上完美运行。然而,在一台机器上,它们停在某些代码行上。它总是相同的线条,但这些线条似乎没有任何共同之处。
如果你在停止后按F5(运行),应用程序会继续,所以它几乎就像添加了一个断点。我们尝试从菜单中选择“删除所有中断”,甚至添加中断并再次删除它。
我们之前已经遇到过单个应用程序的这个问题,我们已经通过从模块中删除代码,编译然后将其粘贴回来等方式来提升它。
现在问题似乎与Excel本身有关,而不是单个.xls,所以我们有点不确定如何管理它。
感谢任何帮助:)
谢谢,
菲利普惠廷顿答案 0 :(得分:373)
我找到了第二个解决方案。
希望这有助于某人。
答案 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用户添加答案。
这两种可能的答案都存在局限性:
可能由于以下任何原因而发生:
操作系统未将系统资源分配给Excel进程。 (解决方案:需要启动操作系统 - 成功率非常低,但已知多次工作)
P代码是在Visual Basic(.NET之前)中使用的中间代码,因此它仍然在VBA中使用。它以更慢的执行速度为代价实现了更紧凑的可执行文件。我为什么要谈论p代码?因为它有时会在多次执行和大文件之间被破坏,或者仅仅因为安装了软件(Excel)而在某处损坏了。当p代码腐败时。代码执行不断被中断。 解决方案:在这些情况下,假设您的代码已经开始损坏,将来您的Excel工作簿也会损坏,从而为您提供“excel文件已损坏且无法打开”等消息。因此,作为一种快速解决方案,您可以根据您的要求依靠答案#1或答案#2。但是,永远不要忽视腐败的迹象。最好在记事本中复制代码模块,删除模块,保存&关闭工作簿,关闭excel。现在,重新打开工作簿并开始使用之前复制到记事本的代码创建新模块。
Mac用户,请尝试以下任何选项,根据您的系统架构,操作系统和Office版本,这些选项肯定会有效
使用上述组合键将进入中断模式,因为宏暂停执行,立即完成当前任务。这是第2步的替代。
答案 9 :(得分:0)
我目前的声誉尚不允许发布此评论。 Stans解决方案进入调试模式,按两次Ctrl + Break,播放,保存确实解决了我的问题,但我有两个意外的曲折:
我的项目结构受密码保护,因此为了进入调试模式,我必须先进入开发者模式,点击项目结构并输入密码。
我的项目是模板文件(.xmtl)。我通过双击打开文件,打开它为.xml,用#34; 1"在上一个文件名的末尾。我通过Stans指令修复了该错误并将其保存为... 1.xml文件。当我再次打开模板时,这次作为模板,并希望对该文件应用相同的错误修复,错误消失了!我没有更改此文件,仍然没有执行宏的错误。这对我来说意味着错误实际上不在文件中,而是在Excel中的(隐藏)设置中。
答案 10 :(得分:0)
如果是幻影断点:
1删除有问题的代码行
2再次运行代码
3重排该行
在花了几天时间仔细研究了这里和其他地方的所有答案之后,我发现了这个可笑的简单解决方案。我认为,如果我将其链接到我的原始问题,则可能会帮助解决其他一些较差的问题,因为它所涉及的问题是VBA break execution when there's no break key on keyboard,而且更适用。
答案 11 :(得分:-1)
现在问题似乎与Excel本身有关
重新安装并修补它:)除此之外很难说。