Pausar la ejecución del código VBA
VBA Pause se usa para pausar la ejecución del código durante un período de tiempo específico y para pausar un código en VBA usamos el método application.wait.
Cuando construimos grandes proyectos de VBA después de realizar algo, es posible que debamos esperar un tiempo para realizar otras tareas. En tales escenarios, ¿cómo pausamos el código macro para realizar nuestra tarea? Podemos pausar el código VBA durante un período de tiempo específico mediante el uso de dos funciones, y esas funciones son "Esperar" y "Suspender".

¿Cómo pausar el código usando el método de espera?
"Esperar" es la función que usamos en VBA para mantener la macro en ejecución durante un período de tiempo específico. Al aplicar esta función, debemos mencionar hasta qué hora debe esperar nuestro código.
Por ejemplo, si está ejecutando el código a las 13:00:00, si proporciona la hora como "13:15:00", la macro se mantendrá ejecutándose durante 15 minutos.
Ahora, mire el argumento de la función WAIT en VBA.

En el argumento de tiempo, debemos mencionar en qué momento nuestro código debe pausar o esperar.
Por ejemplo, mire el siguiente código VBA.
Código:
Sub Pause_Example1 () Rango ("A1"). Valor = "Hola" Rango ("A2"). Valor = "Bienvenida" Aplicación.Espere ("13:15:00") Rango ("A3"). Valor = " A VBA "End Sub

Recuerde, mientras ejecuta este código, la hora de mi sistema es las 13:00:00. Tan pronto como ejecute el código, ejecutará las dos primeras líneas, es decir
Rango ("A1"). Valor = "Hola" & Rango ("A2"). Valor = "Bienvenido"
Pero si miras la siguiente línea, dice Application.Wait ("13:15:00"), así que después de ejecutar las tareas de esas líneas, mi macro se detendrá durante 15 minutos, es decir, a partir de las 13:00:00, esperará hasta que la hora de mi sistema llegue a las 13:15:01.
Una vez que la hora de mi sistema llegue a esa hora, ejecutará las líneas de código restantes.
Rango ("A3"). Valor = "A VBA"
Sin embargo, esta no es la mejor forma de practicar el código de pausa. Digamos que está ejecutando el código en diferentes momentos, y luego necesitamos usar la función NOW VBA con la función TIME VALUE.
Ahora la función devuelve la fecha y hora actuales según el sistema en el que estamos trabajando.
La función de valor de HORA retiene la hora de 00:00:00 a 23:59:29.
Ok, supongamos que necesitamos pausar el código durante 10 minutos cada vez que ejecutamos el código, luego podemos usar el siguiente código.
Código:
Sub Pause_Example1 () Rango ("A1"). Valor = "Hola" Rango ("A2"). Valor = "Bienvenida" Aplicación.Espere (Ahora () + TimeValue ("00:00:10")) Rango (" A3 "). Value =" To VBA "End Sub

Esto es similar al código anterior, pero la única diferencia es que hemos agregado la función NOW & TIME VALUE.
Siempre que ejecutemos este código, mantendrá o pausará la ejecución durante 10 minutos.
¿Cómo pausar el código VBA usando el método de suspensión?
El sueño es una función complicada en VBA porque no es una función incorporada. Dado que no está integrado para que esté disponible para su uso, debemos agregar el siguiente código en la parte superior de nuestro módulo.
Código:
#Si VBA7 Entonces Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Para sistemas de 64 bits #Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #End If' Para sistemas de 32 bits
Solo tienes que copiar el código anterior y pegarlo en la parte superior del módulo.

La razón por la que necesitamos agregar el código anterior porque SLEEP es una función de VBA presentada en archivos DLL de Windows, por lo que debemos declarar la nomenclatura antes de comenzar el subprocedimiento.
Ok, veamos ahora el ejemplo de la función SLEEP.
Código:
Sub Pause_Example2 () Dim StartTime como cadena Dim EndTime como cadena StartTime = Hora MsgBox StartTime Sleep (10000) EndTime = Hora MsgBox EndTime End Sub

Primero, hemos declarado dos variables como String.
Dim StartTime como cadena Dim EndTime como cadena
Luego hemos asignado la función de excel TIME a la variable StartTime. La función HORA devuelve la hora actual según el sistema.
StartTime = Hora
Luego le hemos asignado lo mismo para que se muestre en el cuadro de mensaje.
MsgBox StartTime
Luego apliqué la función SLEEP como Sleep (10000).
Aquí 10000 son milisegundos, lo que equivale a 10 segundos en VBA.
Luego, por fin, le he asignado la función de una vez más a la variable EndTime .
Ahora de nuevo, he escrito un código para mostrar la hora.
EndTime = Hora
Esto mostrará la diferencia entre la hora de inicio y la hora de finalización.
Ahora ejecutaré el código y veré cuál es la hora de inicio.

Cuando ejecuto el código, la hora de mi sistema es 13:40:48, y ahora mi código dormirá durante 10 segundos. Al final, mi tiempo es el siguiente.

Entonces, de esta manera, podemos detener la ejecución del código durante un período de tiempo específico.