中断/中止一个VBA循环

在Excel的VBA中,我有几千个单元格的循环,这需要几分钟的时间。

是否有可能中止一个长期的循环(如果是这样,如何)/我可以build立一个button或类似的东西手动中断此循环?

build立一个button,并用macros覆盖它不是一个问题,只有代码本身。

当Excel忙于执行您的macros,它不会响应button。
你有三个select:

  1. 使用Ctrl+Break键(如同一个button)
  2. 使你的macros更快(也许设置Application.ScreenUpdatingFalse将有所帮助)
  3. 通过在内部循环中插入一个DoEvents来使你的macros慢得多。 这样,Excel将在此期间重新启动button。 这个button触发的macros只是将一个全局variables设置为True (显然,你的内部循环应该在每次迭代中检查这个variables,如果它是True退出)。

Application.EnableCancelKey可能是你正在寻找的东西。
当用户按下转义时,请参阅链接url上的示例代码,将控件传递给error handling程序。

除了其他答案之外,

比方说,你想破坏代码,仍然在你的代码中执行某些操作,你可以通过捕获中断并处理它来做到这一点

您可以使用Err.Number来捕获错误号码

具体来说,Err.Number = 18是指用户中断

 Sub handleError() On Error GoTo MyErrorHandler Application.EnableCancelKey = xlErrorHandler 'Just an example to show something is running For i = 0 To 900000 Range("A1") = i Next i MyErrorHandler: If Err.Number = 18 Then '18 =User interrupt MsgBox " You clicked Ctrl + Break " Exit Sub End If End Sub 

不,button不会停止正在运行的macros。 这是一个开发者的东西,控制不应该默认在用户手中。 您可以尝试下面的组合键来停止macros。

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

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

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

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

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

当macros暂停执行立即完成当前任务时,您将使用上述组合键进入中断模式。 例如,如果是从networking上提取数据,那么在执行任何下一个命令之前,但是在拉取数据之前,它将立即停止,然后按F5F8继续debugging。