簡體   English   中英

如何控制VBA僅允許1個application.ontime實例運行

[英]How to control VBA to only allow 1 instance of application.ontime to run

我有一個使用application.ontime的時間循環,該循環每隔5分鍾將一個單元工作簿中的單元格塊復制並粘貼到另一個工作簿中。 它會不時地復制和粘貼重復項,使我懷疑它正在運行多個實例。 有沒有辦法阻止它的多個版本同時運行? 還是有一種方法可以檢查它在特定時間正在運行(掛起)的實例數?

到目前為止,我的application.ontime中包含以下內容:

Sub timer()

    If Hour(Time) <= 16 Or Hour(Time) >= 18 Then

        Application.OnTime TimeSerial(Hour(Time), Application.WorksheetFunction.Floor(Minute(Time), 5), 0) + TimeValue("00:05:00"), "dataextract", , True

    End If


End Sub

第二個問題:我不太了解它的詳細工作原理。 假設我在6:30 pm啟動一個實例...直到9pm都可以正常工作,然后我開始獲取副本。 破壞VBA時,出現三個彈出錯誤,而不是一個,確認有多個實例正在運行。 但是我不知道是什么原因導致它重復? 可能是我昨天晚上9點啟動了application.ontime並重新啟動了嗎?

您可以存儲計划的時間並在創建下一個計划任務之前取消上一個計划。

On Error Resume Next
Application.OnTime EarliestTime:=Range("NextSchedule"), Procedure:="dataextract", Schedule:=False
On Error GoTo 0

Range("NextSchedule") = TimeSerial(Hour(Now), Application.WorksheetFunction.Floor(Minute(Time), 5) + 5, 0)

Application.OnTime EarliestTime:=Range("NextSchedule"), Procedure:="dataextract", Schedule:=True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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