按Esc时停止Excel宏执行将不起作用

问题描述 投票:32回答:8

我在XP上运行excel 2007。

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

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

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

excel vba excel-vba terminate
8个回答
50
投票

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

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

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

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

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

你可以使用Debug.Asserthalt execution conditionally


15
投票

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


6
投票

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

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

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

步骤#02:现在,尝试以下任何一个选项,它们肯定会起作用,具体取决于您的系统架构,即操作系统和Office版本

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

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


4
投票

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

+ ESC :: SendInput {CtrlBreak}返回

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

所有荣耀到this page


2
投票

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

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

1
投票

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


1
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.