在Excel上的VBA中,我有数千个单元格的循环,这需要几分钟。
是否可以中止长期循环(如果是,如何)/我可以构建一个按钮或类似的东西来手动中断此循环吗?
构建一个按钮并用宏覆盖它不是问题,只有代码本身。
答案 0 :(得分:12)
当Excel忙于执行宏时,它不会响应按钮 你有三个选择:
Ctrl+Break
键(与按钮相对应)Application.ScreenUpdating
设置为
False
会有所帮助)DoEvents
。这个
Excel方式,Excel将转入按钮
与此同时。此按钮将触发的宏只是将全局变量设置为True
(显然,您的内部循环应该在每次迭代时检查此变量,如果它是True
则退出。)答案 1 :(得分:4)
Application.EnableCancelKey
可能是你正在寻找的东西
当用户按下转义符时,将控件传递给错误处理程序时,请查看链接URL上的示例代码。
答案 2 :(得分:2)
除了其他答案,
让我们假设您想破坏代码并仍然在代码中执行某些操作,您可以通过捕获中断并处理它来实现此目的
您可以使用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
答案 3 :(得分:1)
在循环中检查变量,如果正确,则中止循环。
我已经在Excel用户窗体中使用了此功能,但没有在工作表上使用按钮。
答案 4 :(得分:0)
不,按钮不会停止正在运行的宏。它是一个开发者的东西,默认情况下控件不应该在用户的手中。您可以尝试以下组合键来停止宏。
有时,键盘上没有正确的键组( Pause , Break 或 ScrLk)(主要发生在笔记本电脑用户身上)并且按 Esc 2,3或多次也不会停止宏。
我也陷入困境,最终在Windows的辅助功能中找到了解决方案,之后我尝试了所有研究选项,其中3个在3种不同的场景中为我工作。
步骤#01 :如果您的键盘没有特定的按键,请不要担心并打开屏幕键盘'从Windows实用工具中按 Win + U 。
步骤#02 :现在,尝试以上任何选项,根据您的系统架构,操作系统和Office版本,它们肯定会有效
使用上述组合键将进入中断模式,因为宏暂停执行,立即完成当前任务。例如,如果它正在从网络中提取数据,那么它将在执行任何下一个命令之前立即停止但是在拉动数据之后,可以按下 F5 或 F8 继续调试。