首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >中断/中止VBA-循环

中断/中止VBA-循环
EN

Stack Overflow用户
提问于 2010-07-19 17:28:49
回答 4查看 48.3K关注 0票数 5

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

是否可以中止一个长期循环(如果可以,如何终止)/我可以构建一个按钮或类似的东西来手动中断这个循环吗?

构建一个按钮并用宏覆盖它不是问题,只是代码本身的问题。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-19 17:41:19

当Excel忙于执行宏时,它不会响应按钮。

这里有三个选项:

  1. 使用代码键(与按钮相对)
  2. 使宏更快(也许将Application.ScreenUpdating设置为False会有所帮助)
  3. 通过在内部循环中插入DoEvents来使宏变慢。这样,Excel将同时响应于按钮。这个按钮将要触发的宏只会将一个全局变量设置为True (显然,您的内部循环应该在每次迭代时检查这个变量,如果它为True).

,则退出

票数 13
EN

Stack Overflow用户

发布于 2010-07-19 17:41:04

Application.EnableCancelKey可能就是你要找的东西。

参见链接的url上的示例代码,当用户按下换行键时,将控件传递给错误处理程序。

票数 4
EN

Stack Overflow用户

发布于 2014-07-02 22:43:24

除了其他答案之外,

假设您想要中断代码,但仍然在代码中执行某些操作,您可以通过捕获中断并处理它来实现

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

具体地说,Err.Number = 18表示用户中断

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3279826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档