簡體   English   中英

VBA-難以中斷Application.OnTime

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM