我正在編寫VBA上的一個進程,爲此我使用了一個基本的計時器。如何在vba上運行超過午夜的計時器?
dim t as single
T=timer
(code...)
Range("A1") = Timer - t & " secs"
我的計時器應該能夠在午夜後繼續運行。不過,我已經讀過,計時器在24:00休息。是否可以設置一個不受午夜時間影響的計時器?
謝謝你的幫助!
我正在編寫VBA上的一個進程,爲此我使用了一個基本的計時器。如何在vba上運行超過午夜的計時器?
dim t as single
T=timer
(code...)
Range("A1") = Timer - t & " secs"
我的計時器應該能夠在午夜後繼續運行。不過,我已經讀過,計時器在24:00休息。是否可以設置一個不受午夜時間影響的計時器?
謝謝你的幫助!
如果你想做一個時差,你可以做這樣的事情。你需要什麼決議?如果你使用Date變量,我相信你對第二個變量很好。
Sub test()
Dim startdatetime As Date
startdatetime = Now()
' wait 7 seconds (or whatever your code does...)
Application.Wait (Now + 0.00008)
Debug.Print Format(Now() - startdatetime, "s.000")
End Sub
你會需要的日期以及設置功能時
跨午夜運行,用這些變量:
Dim StartDate As Long Dim StartTime As DoubleDim CurrentDate As Long Dim CurrentTime As Double
Dim dblStartDateTime As Double Dim dblCurrentDateTime As Double Dim dblElapsedDateTime As Double
StartDate = Date StartTime = VBA.Timer
dblStartDateTime = StartDate + (StartTime/24/3600)
你會發現, dblStartDateTime看起來很像從VBA.Now()返回的正常DateTime--但它具有VBA.Timer()函數的精度,它是四捨五入的VBA.DateTime函數的精確度。
你的代碼可能像一個循環,檢查某些事件(一個文件夾中出現?),或者當數據從一個較長的計算返回的真實功能:
For i = 1 To 16777216Sleep 10 ' boolAAAAAGGGHHHH = HasGreatCthulhuEmergedFromTheDeep() ' If boolAAAAAGGGHHHH = True Then Exit For ' Next i
所以你現在需要做的是插入一個類似的一段代碼進入死循環,來檢查當前日期和時間,並計算經過間隔:
CurrentDate = Date CurrentTime = VBA.Timer
dblCurrentDateTime = CurrentDate + (CurrentTime/24/3600)
dblElapsedDateTime = dblCurrentDateTime - dblStartDateTime
If dblElapsedDateTime > dblTimeout Then ' Err.Raise -1951535091, "XL Doomwatch App", "Mere mortals shall live another day" Exit For End If
...這是一個很晚的答案,但這是一個相當普遍的問題。