用VBA获取毫秒级时间值的办法

本文介绍了如何通过VBA调用Windows API函数timeGetTime从winmm.dll库获取毫秒级时间戳。在32位和64位系统中,分别提供了不同的声明方式。通过示例代码Sub TimeGetTime_Demo,展示了如何利用该函数进行时间测量,从而实现精确的计时操作。
摘要由CSDN通过智能技术生成

系统自带的now() 、Timer()函数只能获取到秒级的时间值,使用Windows API的winmm.dll中的timeGetTime 就可以获得毫秒级的数值,这个值是从开机到现在的毫秒数。

32位的操作系统在VBA代码的最前面输入下面的代码。

Private Declare Function timeGetTime Lib “winmm.dll” () As Long '32位系统

64位的操作系统在VBA代码的最前面输入下面的代码。

Private Declare PtrSafe Function timeGetTime Lib “winmm.dll” () As Long '64位系统

Private Declare PtrSafe Function timeGetTime Lib "winmm.dll" () As Long '定义API函数

Sub TimeGetTime_Demo()

	Dim Start_Time As Long ‘定义开始时间

	Start_Time = timeGetTime

	While timeGetTime < Start_Time + 200 '循环等待

		DoEvents '转让控制权,以便让操作系统处理其它的事件

	Wend

	Debug.Print timeGetTime() - Start_Time '在立即窗口中打印程序运行所用的时间

End Sub`

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用VBA中的`Timer`函数来获取当前时间,但是它只能精确到秒,无法达到微秒的精度。要在VBA获取微秒时间,您可以使用Windows API函数来实现。 以下是一个示例代码,演示如何使用Windows API函数获取微秒时间: ```vba Option Explicit #If VBA7 Then Declare PtrSafe Sub GetSystemTimePreciseAsFileTime Lib "kernel32" (ByRef lpSystemTimePrecise As FILETIME) #Else Declare Sub GetSystemTimePreciseAsFileTime Lib "kernel32" (ByRef lpSystemTimePrecise As FILETIME) #End If Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Function GetPreciseTime() As Double Dim systemTime As FILETIME Dim currentTicks As Double GetSystemTimePreciseAsFileTime systemTime currentTicks = (systemTime.dwHighDateTime * 2 ^ 32 + systemTime.dwLowDateTime) / 10 ' 转换为微秒 GetPreciseTime = currentTicks End Function Sub Test() Dim startTime As Double Dim endTime As Double startTime = GetPreciseTime() ' 这里放置您要测试的代码 endTime = GetPreciseTime() MsgBox "代码执行时间(微秒): " & endTime - startTime End Sub ``` 在上面的示例代码中,`GetSystemTimePreciseAsFileTime`函数从系统获取当前时间(精确到纳秒),然后通过转换计算得到微秒时间。`GetPreciseTime`函数返回当前时间的微秒数。您可以在`Test`子过程中放置您要测试的代码,在执行结束后,会弹出一个消息框显示代码执行的时间(单位为微秒)。 请注意,`GetSystemTimePreciseAsFileTime`函数在Windows 8及更高版本的操作系统中可用。如果您的操作系统不支持此函数,您可以考虑使用其他方法来获取微秒时间,例如使用第三方库或插件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值