按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。

所有的荣耀到这个页面

有时,键盘上的一组键( PauseBreakScrLk)不可用(主要发生在笔记本电脑用户中),按Esc 2,3或者多次也不会使macros停止。

我也被卡住了,最终在Windows的可访问性function中find了解决scheme,之后我尝试了所有的研究选项,其中3个在三种不同的情况下为我工作。

步骤#01 :如果您的键盘没有特定的键,请不要担心,通过按Win + U从Windows Utilities打开“屏幕键盘”。

步骤#02 :现在,尝试下面的任何一个选项,他们肯定会工作取决于你的系统架构,即操作系统和Office版本

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

当macros暂停执行立即完成当前任务时,您将使用上述组合键进入中断模式。 例如。 如果是从networking上拉数据,那么在执行任何下一个命令之前,会立即停止,但是在拉出数据后,可以按下F5F8继续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语句。 当一切都完美的时候拉出停止声明。