Pausa de VBA

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 por un período de tiempo específico usando 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.

Puede descargar esta plantilla de Excel de pausa de VBA aquí - Plantilla de Excel de pausa de VBA

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 que mientras ejecuto este código, la hora de mi sistema es 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 esas tareas de líneas, mi macro se detendrá durante 15 minutos, es decir, a partir de las 13:00:00 esperará hasta que mi sistema el tiempo llega 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 manera de practicar el código de pausa, digamos que está ejecutando el código en diferentes momentos, entonces 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 TIEMPO retiene la hora desde las 00:00:00 hasta las 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:

# If VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems # 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 nuevamente 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.