控制中断在2010(2013)Excel VBA中不起作用

Tom*_*y Z 19 vba ctrl break excel-vba infinite-loop

我编写代码并且(尽管这很难相信很多),偶尔会搞砸,创建一个无限循环.使用我的新奇特Excel,Ctrl + Break不再有效.Esc键等也没有.我看过整个网络,看起来微软有一个错误,并不关心修复它.

有没有人知道如何重新向VBA引入Ctrl + Break功能,所以如果将来发生这种情况我不会失去工作/强制关闭?谢谢!

小智 37

Alt + Esc.按住键直到它断开.

从Windows 7开始,这将循环显示所有打开的窗口.不要紧,只要继续挤压它.

  • 对于Windows 7和Excel 2010来说,它不适用于我.持续超过30秒.. (3认同)
  • 如果无限循环包括显示MessageBox,则此方法不起作用。MsgBox阻止所有输入到Excel。 (2认同)
  • 按住按键10秒钟,它奏效了-我不敢相信。谢谢约翰 (2认同)

chr*_*sen 7

减轻这种非常烦人的行为的一种方法是包括

DoEvents
Run Code Online (Sandbox Code Playgroud)

在循环。不必每次迭代都执行,只要定期调用,Ctrl Break 仍然有效。

注意:我通常在代码调试后删除它,以避免任何性能影响


cxw*_*cxw 7

至少在Office 2013上,按Ctrl + Scroll Lock可以执行此操作.我不需要更改任何设置或启用任何设置.

(Blatant plug:我的博客文章链接到这个信息的原始来源:))


was*_*icd 6

对于那些尝试过之前提出的解决方案无济于事的人,试试这个。它对我有用(windows8,Excel 2016)

在 VBA 代码窗口中,按住 Alt+ESC 键的同时左键单击并按住(就像您要拖动该窗口一样)。它中断了执行并问我是要继续,还是要调试……我当然选择了调试。

  • 将鼠标与“alt+esc”一起使用即可。也许鼠标停止了窗口循环并通过 alt+esc 聚焦于中断。晚上省钱.. (2认同)
  • 它在 Windows 10 下对我有用,不错的技巧 (2认同)

Ale*_*lex 0

另一种方法是在循环中故意引入错误。例如,您的循环不应运行超过 1000 次:

Function XYZ()
do while(..)
errcnt = errcnt + 1

if errcnt > 1000 then
  cells.find(what:="Chunk Norris").activate
exit function
endif

loop
end function
Run Code Online (Sandbox Code Playgroud)

它会产生错误并“破坏”代码