中断/中止一个VBA循环
在Excel的VBA中,我有几千个单元格的循环,这需要几分钟的时间。
是否有可能中止一个长期的循环(如果是这样,如何)/我可以build立一个button或类似的东西手动中断此循环?
build立一个button,并用macros覆盖它不是一个问题,只有代码本身。
当Excel忙于执行您的macros,它不会响应button。
你有三个select:
- 使用
Ctrl+Break
键(如同一个button) - 使你的macros更快(也许设置
Application.ScreenUpdating
为False
将有所帮助) - 通过在内部循环中插入一个
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 (连续按两次)
有时候,键盘上的一组键( Pause , Break或ScrLk)不可用(主要发生在笔记本电脑用户中),按Esc 2,3或者多次也不会使macros停止。
我也被卡住了,最终在Windows的可访问性function中find了解决scheme,之后我尝试了所有的研究选项,其中3个在三种不同的情况下为我工作。
步骤#01 :如果您的键盘没有特定的键,请不要担心,通过按Win + U从Windows Utilities打开“屏幕键盘”。
步骤#02 :现在,尝试任何上述选项,他们肯定会工作取决于你的系统架构,即操作系统和Office版本
当macros暂停执行立即完成当前任务时,您将使用上述组合键进入中断模式。 例如,如果是从networking上提取数据,那么在执行任何下一个命令之前,但是在拉取数据之前,它将立即停止,然后按F5或F8继续debugging。