[英]VBA - Difficulty interrupting Application.OnTime
我很難中斷循環的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將控制權交還給OS,這應該允許發生停止按鈕事件。 VBA很容易陷入計時器和/或繁重的數據處理的循環中而忽略其他事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.