Excel VBA睡眠功能可暂停您的宏代码

Excel VBA睡眠功能

VBA睡眠 函数是Windows DLL文件下提供的Windows函数,该函数用于在特定数量的我们可以恢复程序之后的特定时间段内,停止或暂停宏过程的运行。

在某些情况下,我们需要暂停宏运行过程以完成其他任务集。其他任务集可以是我们的编码的一部分,也可以是其他宏过程的一部分,或者可以作为当前excel宏的输入。程序运行时如何暂停?我们可以将程序代码暂停一段由用户指定的时间,在此之后,我们可以继续执行该程序。我们可以通过使用SLEEP函数在VBA中执行此操作。

VBA睡眠功能有什么作用?

SLEEP本身就是“休眠一段时间”,“休息一段时间”,“暂停时间”,“暂停一段时间”等名称。休眠功能使用户可以将宏代码暂停几毫秒。使用此方法,我们可以延迟宏代码的处理。

如果您认为我们有一个名为SLEEP的内置函数,那么您错了,因为在VBA中没有这样的函数,而是我们有一个称为Sleep的函数作为Windows函数。通过输入一组特殊的代码,我们实际上可以在VBA中调用此函数。实际上,它是Windows DLL文件中提供的一个函数,因此我们需要在vba中的子​​例程启动之前声明API的命名法。

下面是VBA代码。

代码:

#如果是VBA7,则公共声明PtrSafe子睡眠库“ kernel32”(ByVal dwMilliseconds作为LongPtr)'对于64位版本的Excel#其他公共声明子睡眠库“ kernel32”(ByVal dwMilliseconds作为Long)'对于32位版本的Excel Excel#如果结束 

复制以上内容并粘贴到模块中,然后再开始编写宏代码。应该将其粘贴在您的模块中。

例子

在向您展示编写代码的方式之前,让我简单介绍一下睡眠功能。它以毫秒为单位延迟了该过程。因此,1秒等于1000毫秒,如果要暂停10秒钟,则应该为10000毫秒。

您可以在此处下载此VBA Sleep Excel模板– VBA Sleep Excel模板

范例#1

一旦在Sub过程开始之前粘贴了API代码,就创建一个宏名称。

代码:

#Sub Sleep_Example1()结束Sub 

将两个变量声明为字符串。

代码:

 昏暗的开始时间作为字符串昏暗的结束时间作为字符串 

为了 开始时间 变量分配TIME函数的值。 笔记: Excel函数中的TIME返回当前时间。

代码:

StartTime =时间

现在,我们将在消息框VBA中显示此消息。

代码:

StartTime =时间MsgBox StartTime

现在,我们将使用睡眠功能将代码暂停10秒钟。正如我告诉过的,它以毫秒为单位暂停代码,因此要暂停10秒钟,我们需要使用10000毫秒。

代码:

 Sub Sleep_Example1()Dim StartTime as String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep(10000)End Sub 

现在,使用第二个变量EndTime并分配当前时间。

代码:

 Sub Sleep_Example1()Dim StartTime as String Dim EndTime As String StartTime = Time MsgBox StartTime睡眠(10000)EndTime = Time MsgBox EndTime End Sub 

现在两个变量 开始时间时间结束 将保留宏的开始时间和结束时间。运行此宏,首先我们将看到宏的开始时间,即系统中的当前时间。

单击确定,它将休眠10秒钟。您可以看到缓冲区符号。

10秒钟后,它将开始恢复代码,因此它将显示结束时间,即等待10秒钟后的当前时间。

现在您可以看到宏在10:54:14开始并在10:54:24结束,即恰好有10秒的时间差。在那10秒钟内,VBA暂停了代码运行。

Example#2 –循环中的睡眠功能

睡眠最好与VBA中的循环一起使用。例如,我想在VBA中使用Do while循环从1到10插入序列号。

插入一个数字后,我的代码应等待3秒,因此,如果循环运行10次,则总共应为30秒。

代码:

 Sub Sleep_Example2()Dim k As integer k = 1 Do while k <= 10 Cells(k,1).Value = kk = k + 1 Sleep(3000)'1000毫秒为1秒,因此3000等于3秒循环结束子 

运行此代码,您至少需要等待30秒才能完成该过程。

要跟踪确切的时间,请使用以下代码。

代码:

 Sub Sleep_Example2()Dim k作为整数Dim StartTime作为字符串Dim EndTime作为String StartTime = Time MsgBox“您的代码起始于”&StartTime k = 1时k <= 10个单元格(k,1)。值= kk = k + 1睡眠(3000)'1000毫秒为1秒,因此3000等于3秒 

此代码将显示2消息框,第一个显示开始时间,第二个显示结束时间。

笔记: 在运行此代码时,您无法使用excel,即使转义键也无法使用。