跳到主要内容

暂停执行宏代码

使用 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毫秒,看似字符被逐个输入,从而达到模拟打字输入的效果。

评论

您的电子邮件地址不会显示出来。*号为必填项。