按Esc时停止Excel宏执行将无效

时间:2011-07-21 13:35:59

标签: excel vba excel-vba terminate

我在XP上运行excel 2007。

除了按下escape之外,有没有办法阻止宏在执行期间运行?通常,如果我认为我创建了一个infinate循环或以其他方式弄乱了某些东西我点击了逃逸它会抛出一个错误,但是宏会停止。

这一次(我以前做过但不是很糟糕),我设置了一个msgbox进行快速调试。原来它必须循环大约6000次,这意味着我必须“OK”6000个消息框,这需要几分钟。我没有在运行之前保存(另一个错误)所以我无法打开任务管理器退出。

有没有另一种方法可以停止执行宏,以防我再次这样做?

11 个答案:

答案 0 :(得分:50)

使用 CRTL + BREAK 在任何时候暂停执行。您将进入中断模式并按 F5 继续执行,或按 F8 在可视化调试器中逐步执行代码。

当然这仅在没有打开消息框时才有效,所以如果你的VBA代码由于某种原因不断打开消息框,那么在适当的时候按键会变得有点棘手。

您甚至可以在运行时编辑大部分代码。

使用Debug.Print向VBA编辑器中的Immediate Window打印消息,这比MsgBox更方便。

使用breakpointsStop关键字自动暂停有趣区域的执行。

您可以Debug.Assert使用halt execution conditionally

答案 1 :(得分:15)

CTRL + SCR LK(Scroll Lock)为我工作。

答案 2 :(得分:6)

有时,键盘上没有正确的键组( Pause Break ScrLk)(主要发生在笔记本电脑用户身上)并且按 Esc 2,3或多次也不会停止宏。

我也陷入困境,最终在Windows的辅助功能中找到了解决方案,之后我尝试了所有研究选项,其中3个在3种不同的场景中为我工作。

步骤#01 :如果您的键盘没有特定的键,请不要担心,并按 Win + <从Windows实用工具打开“OnScreen键盘” KBD>û

步骤#02 :现在,尝试以下任何选项,根据您的系统架构,操作系统和Office版本,它们肯定会有效

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

使用上述组合键将进入中断模式,因为宏暂停执行,立即完成当前任务。例如。如果是从网络中提取数据,那么它将在执行任何下一个命令之前立即停止但是在提取数据之后,可以按 F5 F8 继续调试

答案 3 :(得分:4)

您可以按 ctrl + break 停止宏,但如果没有中断键 则可以使用此{{ 3}}(开源)代码:

  

+ ESC :: SendInput   {} CtrlBreak   返回

shift + Escape 就像按 ctrl + break 一样,这将停止你的宏。< / p>

autohotkey

的所有荣耀

答案 4 :(得分:2)

我也想使用MsgBox进行调试,而且我不止一次遇到过同样的问题。现在我总是在弹出窗口中添加一个取消按钮,如果按下取消则退出宏。示例代码:

    If MsgBox("Debug message", vbOKCancel, "Debugging") = vbCancel Then Exit Sub

答案 5 :(得分:1)

您也可以尝试使用“Break”按钮或“sys rq”按钮按下“FN”或功能键 - 系统请求 - 必须同时按下这样才能停止任何正在运行的宏

答案 6 :(得分:1)

我发现有时当我打开第二个Excel窗口并在第二个窗口上运行宏时,第一个窗口的执行就会停止。我不知道为什么它一直不起作用,但你可以试试。

答案 7 :(得分:0)

在执行我的宏之前,我忘了用MsgBox注释掉一行。意思是我必须点击OK超过十万次。 ESC键只是转义消息框而不是停止执行宏。连续按住ESC键几秒钟,我就停止了代码的执行。

答案 8 :(得分:0)

ESC和CTRL-BREAK暂时对我不起作用。 但是CTRL-ESC起作用了!? 不知道为什么,但是我想我会把它扔出去,以防别人帮忙。 (我在循环中忘记了i = i + 1 ...)

答案 9 :(得分:0)

我的笔记本电脑没有Break或Scr Lock,因此我设法通过按 Ctrl + Function + Right Shift(以激活“暂停”)来使其能够工作

答案 10 :(得分:0)

只需按住ESC键即可。它将停止VBA。当您获得无限MsgBox s

时,此方法有效