我很难打断循环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
如何实现这一目标的任何建议都将非常感激!
答案 0 :(得分:0)
这应该这样做,一个略微不同的方法,在点击“停止”按钮时完全删除计划:
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秒!
答案 1 :(得分:-1)
尝试在testup1()末尾使用命令DoEvents将控制权返回给O.S.,这应该允许发生停止按钮事件。 VBA很容易陷入带有定时器和/或大量数据处理的循环中,并忽略其他事件。