我有一個application.ontime例程如下。爲什麼我的application.ontime不能在if語句中工作? VBA
Sub timer()
If Hour(Time) <= 15 Or Hour(Time) >= 22 Then
On Error Resume Next
Application.OnTime EarliestTime:=ThisWorkbook.Worksheets("Sheet1").Range("K5"), Procedure:="dataextract", Schedule:=False
On Error GoTo 0
ThisWorkbook.Worksheets("Sheet1").Range("K5") = Now + TimeSerial(0, WorksheetFunction.Floor(Minute(Now), 5) + 5 - Minute(Now), 1 - Second(Now))
Application.OnTime EarliestTime:=ThisWorkbook.Worksheets("Sheet1").Range("K5"), Procedure:="dataextract", Schedule:=True
End If
End Sub
我想這個程序至10點之間上day 0
上day 1
運行到下午4點,然後自行重新啓動晚上10點day 1
到下午4點day 2
,等等。代碼在下午4點停止,但不會在晚上10點重新啓動。正如你所看到的,我永遠不會轉身schedule:=false
,所以我不明白爲什麼它不會重新啓動..?
'Timer'已經有一個內置的VBA意義。也許改名字。我懷疑這是問題,但可能是這樣。 –
你拍攝的時間間隔是多少?不確定我在這裏按照你使用TimeSerial的方式。那麼'timer'如何被調用?這裏沒有任何東西可以在代碼停止後重啓代碼。即如果在下午3點之後和晚上10點之前調用「計時器」,則不採取行動並且不計劃其他運行。 –
我每5分鐘致電一次。發言權功能將第一輪運行轉到下一個5分鐘的時間間隔。例如,我在晚上9點43分開始申請,晚上9點45分。我還檢查以確保只有1個application.ontime運行實例。 – A1122