如何在vba中使用等待和睡眠命令?
VBA等待命令
在 VBA 中,WAIT 命令(方法)可帮助您等待在 Excel 中执行的所有活动一段时间或直到特定时间。简单地说,您可以让 VBA 等待几秒、几分钟甚至几小时,或者直到固定时间。它有一个参数需要您指定它。
使用VBA等待的步骤
- 首先,使用关键字“Application”并键入句点 (.) 以获取属性和方法的列表。
- 之后,选择或点击“等待”方法。
- 现在指定“Time”参数来告诉 VBA 您要等待多长时间。
- 最后,运行代码对 Excel 中的所有活动进行排队。
在此代码中,您使用NOW和TIMEVALUE ( VBA 函数)来告诉 VBA 从运行代码时起等待 10 秒。因此,一旦十秒结束,IF 语句将测试条件并执行,向您显示一个带有消息“等待结束”的消息框。
Sub vba_wait_example() If Application.Wait(Now + TimeValue("00:00:10")) = True Then MsgBox "Wait Over" End If End Sub
您还可以使用 Wait 方法让 Excel 等待所有活动,直到特定时间。以下代码会等到下午 1:00 因此,由于我的系统现在是 12:52,此行代码将使其等待接下来的 8 分钟。
Application.Wait "13:00:00"
注意:使用wait方法,只能等待至少一秒。
VBA睡眠
Sleep 是一个 Windows 函数(在 Windows DLL 文件下;您需要使用代码语句导入此函数),可以帮助您在运行宏时暂停或添加延迟。在此函数中,您可以指定以毫秒为单位的时间,但是一旦睡眠函数暂停了所有操作,您就无法停止它。
使用VBA中的睡眠函数
- 首先,需要使用代码语句从“ kernel32库”导入sleep函数。
- 如果您使用的是 64 位 Excel,则需要确保添加“PtrSafe”语句。
- 然后需要在代码中调用sleep函数。
- 最后,指定您想要延迟代码的时间(毫秒)。
If VBA7 Then ' For 64-Bit versions of Excel
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Else 'For 32-Bit versions of Excel Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) End If Sub vba_sleep() Sleep (10000) 'add code here MsgBox "Finished" End Sub
在上面的代码中,您有 10,000 毫秒,相当于 10 秒。当您运行此代码时,它将延迟代码 10 秒,然后显示一个消息框。
注意:当您使用睡眠功能时,它会在您设置的时间内停止 Excel 中的所有操作,您甚至无法中断它。请务必查看 Microsoft 提供的有关 32 位和 64 位版本之间兼容性的链接。