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