VBA - 难以中断应用程序



我很难中断循环的Application.OnTime命令。我有一个宏,我想每 5 秒(CommandButton221(定期循环一次,但随后我希望能够通过按StopButton来切断循环。

Private Sub CommandButton221_Click()
If StopMacro = True Then Exit Sub
'[Code that I want looping, not relevant to the question]
testup1
End Sub
Public Sub testup1()
RunWhen = Now + TimeValue("00:00:05")
Application.OnTime RunWhen, "CommandButton221_Click", , True
End Sub
Public Sub StopButton_Click()
StopMacro = True
End Sub

任何关于如何实现这一目标的建议将不胜感激!

这应该可以做到,一种稍微不同的方法,在点击停止按钮时完全删除时间表:

Public RunWhen As Double
Private Sub CommandButton221_Click()
Application.StatusBar = Now()
testup1
End Sub
Public Sub testup1()
RunWhen = Now + TimeValue("00:00:05")
Application.OnTime RunWhen, "CommandButton221_Click", , True
End Sub
Public Sub StopButton_Click()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedure:="CommandButton221_Click", Schedule:=False
End Sub

确保您在 221 中的代码运行时间不超过 5 秒!

尝试在testup1((末尾使用命令DoEvents将控制权交还给操作系统,这应该允许停止按钮事件发生。VBA 很容易陷入计时器和/或繁重数据处理的循环中并忽略其他事件。

最新更新