如何在VBA(Excel)中以毫秒为单位获得DateDiff值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

我需要以毫秒为单位计算两个时间戳之间的差额。不幸的是,VBA的DateDiff函数不能提供这种精度。有什么解决办法吗?

提问于
用户回答回答于

可以使用描述的方法详情如下:

创建一个名为StopWatch将以下代码放入StopWatch模块:

Private mlngStart As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long

Public Sub StartTimer()
    mlngStart = GetTickCount
End Sub

Public Function EndTimer() As Long
    EndTimer = (GetTickCount - mlngStart)
End Function

使用代码如下:

Dim sw as StopWatch
Set sw = New StopWatch
sw.StartTimer

' Do whatever you want to time here

Debug.Print "That took: " & sw.EndTimer & "milliseconds"

其他方法描述了VBA计时器函数的使用,但这只精确到百分之一秒(厘米秒)。

用户回答回答于

如果只需要在Centi秒中运行时间,那么就不需要TickCountAPI。可以只使用VBA.Timer方法,它存在于所有Office产品中。

Public Sub TestHarness()
    Dim fTimeStart As Single
    Dim fTimeEnd As Single
    fTimeStart = Timer
    SomeProcedure
    fTimeEnd = Timer
    Debug.Print Format$((fTimeEnd - fTimeStart) * 100!, "0.00 "" Centiseconds Elapsed""")
End Sub

Public Sub SomeProcedure()
    Dim i As Long, r As Double
    For i = 0& To 10000000
        r = Rnd
    Next
End Sub

扫码关注云+社区