|
楼主 |
发表于 2009-6-16 11:15
|
显示全部楼层
第11部分 其他应用
技巧185 暂停代码的运行
在程序运行过程中,如果需要暂时停止宏代码的执行,可以使用Wait方法,如下面的代码所示。- #001 Private Sub UserForm_Activate()
- #002 Dim i As Integer
- #003 For i = 1 To 10
- #004 Label1.Caption = "这是个演示窗体,将在" & 11 - i & "秒后自动关闭!"
- #005 Application.Wait Now() + VBA.TimeValue("00:00:01")
- #006 DoEvents
- #007 Next
- #008 Unload Me
- #009 End Sub
复制代码 代码解析:
窗体的激活事件,使用Wait方法使窗体显示10秒后关闭。
第4行代码在窗体的标签中显示倒计时关闭的秒数。
第5行代码使用Wait方法使代码暂停运行1秒钟。应用于Application对象的Wait方法暂停运行宏,直到一特定时间才继续运行宏,语法如下:
Wait(Time)
参数Time是必需的,指定想要重新继续执行宏的时间点,以Microsoft Excel日期格式表示。
使用该方法将暂停Microsoft Excel的所有操作,但不影响后台操作,例如打印和重新计算。
第6行代码使用DoEvents函数转让控制权,更新标签中倒计时秒数。
运行窗体,标签中显示倒计时关闭的秒数并在10秒后关闭,如图所示。
使用Wait方法只能提供精度为1秒的延时,如果需要更低精度的延时,需要使用Sleep API函数,如下面的代码所示。- #001 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
- #002 Sub TypeDemo()
- #003 Dim sTest As String
- #004 Dim i As Integer
- #005 sTest = "这是Sleep API函数的一个简单演示。"
- #006 For i = 1 To Len(sTest)
- #007 Range("A1").Value = Left(sTest, i)
- #008 Sleep 200
- #009 Next
- #010 End Sub
复制代码 代码解析:
TypeDemo过程模拟打字效果在单元格A1中输入一行文字。
第1行代码Sleep API函数声明,参数dwMilliseconds为以毫秒为单位的时间长度。
在第6行到第9行代码在每次循环时增加显示的数据,并且在每次增加时使用Sleep语句延时200毫秒,好像字符逐个输入,从而达到模拟打字的效果。 |
|