我在XP上运行excel 2007。
除了按下escape之外,有没有办法阻止宏在执行期间运行?通常,如果我认为我创建了一个infinate循环或以其他方式弄乱了某些东西我点击了逃逸它会抛出一个错误,但是宏会停止。
这一次(我以前做过但不是很糟糕),我设置了一个msgbox进行快速调试。原来它必须循环大约6000次,这意味着我必须“OK”6000个消息框,这需要几分钟。我没有在运行之前保存(另一个错误)所以我无法打开任务管理器退出。
有没有另一种方法可以停止执行宏,以防我再次这样做?
答案 0 :(得分:50)
使用 CRTL + BREAK 在任何时候暂停执行。您将进入中断模式并按 F5 继续执行,或按 F8 在可视化调试器中逐步执行代码。
当然这仅在没有打开消息框时才有效,所以如果你的VBA代码由于某种原因不断打开消息框,那么在适当的时候按键会变得有点棘手。
您甚至可以在运行时编辑大部分代码。
使用Debug.Print
向VBA编辑器中的Immediate Window打印消息,这比MsgBox
更方便。
使用breakpoints或Stop
关键字自动暂停有趣区域的执行。
您可以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版本,它们肯定会有效
使用上述组合键将进入中断模式,因为宏暂停执行,立即完成当前任务。例如。如果是从网络中提取数据,那么它将在执行任何下一个命令之前立即停止但是在提取数据之后,可以按 F5 或 F8 继续调试
答案 3 :(得分:4)
您可以按 ctrl + break 停止宏,但如果没有中断键 则可以使用此{{ 3}}(开源)代码:
+ ESC :: SendInput {} CtrlBreak 返回
按 shift + Escape 就像按 ctrl + break 一样,这将停止你的宏。< / p>
的所有荣耀答案 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