毫秒的 Excel VBA Ontime 函数

问题描述

我编写了这段代码,使用 ontime 函数每秒运行一个过程:

Sub startTimer()
 Application.OnTime (Now + TimeValue("00:00:01")),"increment"
End Sub

Sub increment()
'some code here
startTimer
End Sub

代码工作正常,但有没有办法增加几分之一秒(例如:10 毫秒) ?

解决方法

试试这个:

Sub startTimer()
    
    Const MILLISECOND_MULTIPLIER As Double = 0.000000011574;
    
    ' bracket is optional,but kept for clarity
    Application.OnTime (Now + (MILLISECOND_MULTIPLIER * 10)),"increment")
    
End Sub

这是受到现有答案 here 中的评论的启发。

,

如果认真使用毫秒,确实在减法或比较值时,请务必使用 Decimal 计算而不是 Double 以避免误码:

Dim OneMillisecond As Variant

OneMillisecond = CDec(TimeSerial(0,1) / 1000)
' OneMillisecond = 0.0000000115740740740741 

TenMilliseconds = OneMillisecond * CDec(10)

MS Access Can Handle Millisecond Time Values - Really