使用 Wait 方法
如果在程序运行过程中,需要暂停宏代码的执行,可以使用 Application 对象的 Wait 方法。Wait 方法暂停 Excel 的所有操作,并且,Wait 起作用时可能禁止您对计算机做其他操作。不过,后台操作(如打印和重新计算)将继续进行。
示例:使应用程序暂停3秒
如下示例使用 Wait 方法使应用程序从窗体激活开始暂停3秒,3秒钟后窗体自动关闭,并且在窗体显示期间不接受用户的操作。
Private Sub UserForm_Activate()
Application.Wait Now() + VBA.TimeValue("00:00:03")
Unload Me
End Sub
Wait 方法的语法
Application.Wait (Time)
其中,参数 Time
用于指定重新继续执行宏的时间点,其值以 Excel 日期格式表示。
使用 Sleep API 函数
Wait 方法提供精度为1秒的延时,如果需要更高精度的延时,可以使用 Sleep API 函数。
函数声明
使用 Sleep API 函数前需要进行函数声明,将以下代码放于过程顶部。
#If VBA7 And Win64 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
其中,参数 dwMilliseconds
为要暂停执行的时间间隔,以毫秒为单位,为 Long 类型变量。
示例:模拟打字输入效果
本示例使用 Sleep API 函数在单元格 A1 中输入一行文字,模拟打字输入的效果。
Sub TypeDemo()
Dim strTest As String, i As Integer
strTest = "使用Sleep API函数模拟打字输入的效果。"
For i = 1 To Len(strTest)
Range("A1").Value = Left(strTest, i)
Sleep 200
Next i
End Sub
第 4-7 行代码在每次循环中逐个增加 A1 单元格显示的字符长度,同时在显示字符后使用 Sleep 语句延时200毫秒,看似字符被逐个输入,从而达到模拟打字输入的效果。