按Esc时停止Excelmacros执行不起作用
我在XP上运行Excel 2007。
有没有办法阻止一个macros在执行过程中运行,而不是按下转义? 通常如果我认为我创build了一个无限循环或者其他的东西,那么我打了一个escape,它会抛出一个错误,但macros停止。
这一次(我已经做了,但没有这么糟糕),我build立了一个msgbox进行一些快速debugging。 原来,它必须循环大约6000次,这意味着我必须“确定”6000个消息框,这花了几分钟。 我没有保存之前运行(另一个错误),所以我不能打开任务pipe理器退出。
有没有另外一种方法来阻止macros的执行情况,如果我再次这样呢?
在任何时候使用CRTL + BREAK暂停执行。 您将进入中断模式,可以按下F5继续执行或按F8在可视debugging器中逐步执行代码。
当然这只有在没有消息框打开的情况下才起作用,所以如果你的VBA代码由于某种原因不断地打开消息框,在正确的时刻按下按键会变得有点棘手。
运行时,您甚至可以编辑大部分代码。
使用Debug.Print
将消息打印到VBA编辑器中的立即窗口 ,这比MsgBox
更方便。
使用断点或Stop
关键字自动停止在感兴趣的区域执行。
您可以使用Debug.Assert
地暂停执行 。
CTRL + SCR LK(滚动locking)为我工作。
你可以通过按ctrl + break来停止macros,但是如果你没有break键,你可以使用这个autohotkey (开源)代码:
+ ESC :: SendInput {CtrlBreak}返回
按Shift + Escape将像按Ctrl + Break ,因此将停止您的macros。
所有的荣耀到这个页面
有时,键盘上的一组键( Pause , Break或ScrLk)不可用(主要发生在笔记本电脑用户中),按Esc 2,3或者多次也不会使macros停止。
我也被卡住了,最终在Windows的可访问性function中find了解决scheme,之后我尝试了所有的研究选项,其中3个在三种不同的情况下为我工作。
步骤#01 :如果您的键盘没有特定的键,请不要担心,通过按Win + U从Windows Utilities打开“屏幕键盘”。
步骤#02 :现在,尝试下面的任何一个选项,他们肯定会工作取决于你的系统架构,即操作系统和Office版本
- Ctrl + 暂停
- Ctrl + ScrLk
- Esc + Esc (连续按两次)
当macros暂停执行立即完成当前任务时,您将使用上述组合键进入中断模式。 例如。 如果是从networking上拉数据,那么在执行任何下一个命令之前,会立即停止,但是在拉出数据后,可以按下F5或F8继续debugging。
我也喜欢使用MsgBox进行debugging,而且我已经多次遇到同样的问题。 现在我总是添加一个取消button的popup,并退出macros如果按下取消。 示例代码:
If MsgBox("Debug message", vbOKCancel, "Debugging") = vbCancel Then Exit Sub
您也可以尝试按下“FN”或function键,然后按下“Break”button或“sys rq”button – 系统请求 – 必须一起按下,这会停止任何正在运行的macros
我发现有时我打开第二个Excel窗口并在第二个窗口上运行macros,第一个窗口的执行停止。 我不知道为什么它不是一直工作,但你可以尝试。
在执行我的macros之前,我忘了用MsgBox注释掉一行。 这意味着我必须点击十多万次。 ESC键只是转义消息框而不是停止macros的执行。 连续按住ESC键几秒钟,帮助我停止执行代码。
我的小回顾build议是在debugging中使用的每个Msgbox之后插入一个Stop。 如果你写一个Msgbox返回一个答案(例如,VbOk,VbCancel),也可以给每个添加一个Stop语句。 当一切都完美的时候拉出停止声明。