问题描述
我编写了这段代码,使用 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)