Application.Wait method (Excel)
Wait 方法暂停 Microsoft Excel 的所有操作,并且,Wait 起作用时可能禁止您对计算机做其他操作。 不过,后台操作(如打印和重新计算)将继续进行。
语法:Application.Wait(你想要恢复宏的时间,采用 Microsoft Excel 日期格式。)该参数为字符串(时,分,秒)格式,不支持小数,如:
Application.Wait(Now + TimeValue("0:00:00,0.5"))这样是实现不了延时0.5s(500ms)的
e.g:Application.Wait(Now + TimeValue("0:0:10"))
暂停excel操作大约 10 秒。Now + TimeValue("0:0:1")
表示当前时间加上 1 秒钟的时间间隔,产生的结果将用于指定等待的结束时间。
Now
函数将返回完整的日期和时间;Time
函数只返回时间,而不返回日期。
Timer函数配合DoEvents函数
VBA 的 Timer 函数将系统时间时分秒全部加起来以秒为单位返回数值。
e.g1:
'通过执行空语句来实现延时,这样和wait函数一样,执行期间无法其他操作
Sub DelayWithInteraction()
Dim StartTime As Double
Dim DelaySeconds As Double
DelaySeconds = 0.5 '设定等待时间(以秒为单位)
StartTime = Timer ' 记录开始时间
Do While Timer < StartTime + DelaySeconds
' 处理其他事件
Loop
' 等待完成后执行其他代码
MsgBox "等待完成!"
End Sub
e.g2:
'通过DoEvents 函数可以让 VBA 在等待期间处理其他的事件。这样,你就可以进行交互操作(例如点击按钮、滚动窗口等),而不会感到阻塞。
Sub DelayWithInteraction(xs as double)
Dim StartTime As Double
Dim DelaySeconds As Double
DelaySeconds = xs '设定等待时间(以秒为单位)
StartTime = Timer ' 记录开始时间
Do While Timer < StartTime + DelaySeconds
DoEvents
Loop
End Sub
注意:DoEvents
函数的执行时间通常非常短暂,大致在几毫秒的范围内。然而,具体的执行时间会受到多个因素的影响,如处理器速度、系统负载、当前运行的其他程序等。因此,无法精确预测 DoEvents
函数一次的执行时间。
TimeValue 函数
返回包含时间的 Variant (Date)。
所需的 time参数 通常是一个 字符串表达式。可以使用 12 小时制或 24 小时制输入有效时间。 例如, "2:24PM"
和 "14:24"
都是有效的 时间 参数。
如果 time 参数包含日期信息,则 TimeValue 不返回该信息。 但是,如果 time 包括无效日期信息,则会出现错误。最小单位1s,只接受整数值,小数部分将会被忽略。
Debug.Print TimeValue("4:35:17") 'return 4:35:17
Debug.Print TimeValue("4:35:17 PM") '16:35:17
Debug.Print TimeValue("4:35:17 AM") '4:35:17
TimeSerial 函数
返回包含特定的小时、分钟和秒所对应的时间的 Variant (Date)。
最小单位1s,只接受整数值,小数部分将会被忽略。
debug.print TimeSerial(16, 35, 17) 'return 16:35:17
debug.print TimeSerial(16, -10, 17) 'return 15:50:17
debug.print TimeSerial(0,0,0.5) 'return 0,0,0 因为timeserial最小单位1s,只接受整数值,所以小数部分将会被忽略。