VBA等待功能|如何使用Excel VBA等待方法?
Excel VBA等待功能
VBA等待 是一个内置函数,用于暂停代码执行指定的时间,它与我们在sleep命令中执行的操作和暂停使用application.wait方法的代码非常相似。
由于要完成其他任务,某些代码需要一定时间才能进入下一行代码。在这些情况下,我们需要停止要执行的代码并暂停一段时间,然后再继续执行。我们可以通过两种方式暂停要执行的代码,第一种是“ Sleep”方法,第二种是“ Wait”方法。在我们之前的文章中,我们讨论了“ VBA Sleep”方法来暂停VBA代码。
顾名思义,“ Wait”将保留要在指定时间范围内执行的宏代码。使用这种方法,我们需要指定代码暂停的时间,接下来我们将看到示例。
WAIT函数的语法如下。
我们需要提及代码应该暂停的时间。正如您在最后看到的,它说的是布尔值,这意味着它以布尔值(即TRUE或FALSE)返回结果。
在指定的时间到达之前,它会显示FALSE,并且在指定的时间到达时,它会返回TRUE。
这与SLEEP函数不同,因为WAIT是内置函数,而SLEEP是Windows函数。在访问SLEEP函数之前,我们需要在模块顶部提及以下代码。但是WAIT不需要这样做。
代码:
#如果VBA7则公共声明PtrSafe子睡眠库“ kernel32”(ByVal dwMilliseconds作为LongPtr)'对于64位系统#其他公共声明子睡眠库“ kernel32”(ByVal dwMilliseconds作为Long)'对于32位系统,如果结束
使用Excel VBA等待功能的示例
您可以在此处下载此VBA等待Excel模板– VBA等待Excel模板范例#1
假设您在14:30:00的excel午间工作,并且您希望代码暂停到时间14:40:00为止。您可以使用以下代码。
代码:
Sub Wait_Example1()Application.Wait“ 14:40:00” End Sub
该代码将阻止您的excel正常工作,直到操作系统中的时间达到14:40:00。提供这样的时间是很危险的,因为我们并不总是从14:30:00开始工作,而是一直在变化。
假设每当您要运行2分钟的代码时,如何在代码中引用它?
因此,我们可以将VBA NOW函数与TIME VALUE函数一起使用,以从当前时间输入指定的时间。
只是提醒您,NOW()函数根据您的计算机系统返回当前日期和时间。 TIMEVALUE函数以24小时格式表示从00:00:00到23:59:59,即11:59:59 P.M的时间。它将字符串值转换为时间值。
例如,NOW()+ TIMEVALUE(00:02:30)表示当前时间+ 2分30秒。
如果当前时间是14:25:30,那么它将变为14:28:00。
要停止或暂停从当前时间到接下来的10分钟的代码执行,您可以使用以下代码。
代码:
Sub Wait_Example2()Application.Wait(Now()+ TimeValue(“ 00:10:00”))End Sub
使用NOW()函数进行准确的暂停很重要,否则,您的excel工作簿可能会暂停到午夜。但是,我们可以在任何时间点按一下暂停方法 Esc键 键或 断码。
范例#2
每次循环运行都要等待10秒
wait方法非常适合与循环一起使用。在某些情况下,您可能需要在每次循环运行时等待10秒。例如,查看下面的数据。
要计算利润=(销售–成本),您要创建一个循环,每个循环之后,您都需要等待10秒以检查结果是否准确。下面的代码将做到这一点。
代码:
Sub Wait_Example3()Dim k作为整数,其中k = 2到9个单元格(k,4)。值=单元格(k,2)-单元格(k,3)Application.Wait(Now()+ TimeValue(“ 00:00 :10“))下一个k结束子
此代码将逐行计算利润列。第一行完成后,它将等待10秒钟,然后才能计算下一行。
VBA睡眠vs VBA等待
VBA睡眠 | VBA等待 | |
它不是VBA内置功能,需要特殊的代码才能访问此功能。 | 这是VBA的内置功能,不需要任何特殊代码即可访问此功能。 | |
睡眠需要毫秒作为时间范围。 | 等待需要一个固定的时间范围。 | |
我们可以将代码延迟几毫秒 | 我们只能延迟整整几秒钟。 |