如何在vba中使用等待和睡眠命令?

VBA等待命令

在 VBA 中,WAIT 命令(方法)可帮助您等待在 Excel 中执行的所有活动一段时间或直到特定时间。简单地说,您可以让 VBA 等待几秒、几分钟甚至几小时,或者直到固定时间。它有一个参数需要您指定它。

使用VBA等待的步骤

  1. 首先,使用关键字“Application”并键入句点 (.) 以获取属性和方法的列表。
  2. 之后,选择或点击“等待”方法。
  3. 现在指定“Time”参数来告诉 VBA 您要等待多长时间。
  4. 最后,运行代码对 Excel 中的所有活动进行排队。
vba 等待命令

在此代码中,您使用NOWTIMEVALUEVBA 函数)来告诉 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中的睡眠函数

  1. 首先,需要使用代码语句从“ kernel32库”导入sleep函数。
  2. 如果您使用的是 64 位 Excel,则需要确保添加“PtrSafe”语句。
  3. 然后需要在代码中调用sleep函数。
  4. 最后,指定您想要延迟代码的时间(毫秒)。
 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 位版本之间兼容性的链接。

添加评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注