Funciones de espera y suspensión de VBA: código VBA de pausa / retardo

Este tutorial demostrará cómo pausar / retrasar el código usando las funciones de espera y suspensión en VBA.

Cuando creamos grandes programas VBA que realizan muchos cálculos, o tal vez incluso llamamos a un programa externo para que se ejecute, es posible que necesitemos que nuestro código VBA deje de ejecutarse durante un período de tiempo específico mientras se lleva a cabo el proceso externo. VBA tiene algunos métodos disponibles para lograr esto.

Uso del método Application.Wait

Si necesitamos pausar la ejecución de nuestra macro durante algún tiempo o hasta que se haya alcanzado un tiempo específico antes de ejecutar el siguiente paso, podemos usar el Aplicación Espera método. Esto podría ser útil, por ejemplo, si hemos automatizado un proceso de inicio de sesión en un sitio web y necesitamos esperar unos segundos hasta que se cargue la página antes de que nuestra macro continúe ejecutándose.

Espere 1 segundo

Incluyendo esta línea a continuación en su macro, su ejecución se detendrá durante aproximadamente 1 segundo:

1 Application.Wait (Now + TimeValue ("0:00:01"))

Esperar hasta

En algunos casos, deberá esperar hasta una hora específica. Con esta línea debajo, su macro no procederá antes de las 9 am:

1 Aplicación.Espere "09:00:00"

Tenga en cuenta que el Aplicación Espera no acepta retrasos de menos de 1 segundo.

Programación VBA | ¡Code Generator funciona para usted!

Uso del método del sueño

Si necesita una forma más precisa de pausar su macro, puede utilizar el método de suspensión.

El sueño es una función de la API de Windows, es decir, no forma parte de VBA. Se puede acceder mediante una declaración de declaración especial.

Si está utilizando la versión de 64 bits de Microsoft Office, puede insertar la siguiente declaración en un módulo nuevo o al principio del módulo (no directamente en la subrutina) en el que desea utilizar la función de suspensión:

1 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal milisegundos como LongPtr)

Con la versión de 32 bits, use esta línea:

1 Public Declare Sub Sleep Lib "kernel32" (ByVal milisegundos como LongPtr)

Después de declarar la función Sleep, tiene acceso a ella en sus subrutinas como esta:

1 Dormir 10000

Con esta línea arriba, su macro se pausará durante 10,000 milisegundos, es decir, 10 segundos.

Usar un bucle con Do Events

La gran desventaja de usar los métodos de espera y suspensión es que el usuario no puede hacer nada en Excel mientras espera que continúe la macro. Un usuario podría pensar que Excel ha dejado de responder y mientras el usuario puede usar Ctl + Descanso interrumpir la macro, esto anula el propósito de poner una pausa en la macro para empezar.

Para superar este problema, podemos usar un bucle con un método llamado DoEvents.

1234567 Subprueba pública ()Dim i tan largoPara i = 1 a 20000Rango ("A1"). Valor = iDoEventsSiguiente yoEnd Sub

Ahora, mientras Excel está ejecutando la macro anterior, el usuario puede continuar interactuando con Excel; podemos cambiar pestañas o formatear celdas, por ejemplo, básicamente, la macro continúa ejecutándose pero la pantalla de Excel no está congelada. Podríamos usar un ciclo similar para crear una función de temporizador en Excel e incorporar el DoEvents método para descongelar la pantalla mientras el temporizador está funcionando.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave