Función de espera de VBA

Función de espera de Excel VBA

VBA Wait es una función incorporada que se usa para pausar la ejecución del código durante un período de tiempo específico, es muy similar a lo que hacemos en un comando de suspensión y para pausar un código usamos el método application.wait.

Algunos de los códigos requieren algún tiempo antes de avanzar a la siguiente línea de código debido a que se deben completar otras tareas. En estos casos, debemos detener la ejecución del código y hacer una pausa durante un tiempo para luego continuar con la ejecución. Podemos pausar el código para que se ejecute de dos formas, la primera es el método "Sleep" y la segunda es el método "Wait". En nuestro artículo anterior, hemos discutido el método "VBA Sleep" para pausar el código VBA.

"Espere", como dice el propio nombre, mantendrá el código de macro que se ejecutará en un período de tiempo específico. Usando este método, necesitamos especificar el tiempo que nuestro código debe pausar, veremos ejemplos a continuación.

La sintaxis de la función WAIT es la siguiente.

Necesitamos mencionar la cantidad de tiempo que nuestro código debe detenerse. Como puede ver al final, dice Boolean, esto significa que devuelve el resultado como valores booleanos, es decir, VERDADERO o FALSO.

Hasta que llegue la hora especificada, dice FALSO y el momento en que llegó la hora especificada devuelve VERDADERO.

Esto es diferente a la función SLEEP porque WAIT es una función incorporada donde SLEEP es una función de Windows. Antes de acceder a la función SLEEP, debemos mencionar el siguiente código en la parte superior del módulo. Pero WAIT no requiere esto.

Código:

# If VBA7 Then 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)' Para sistemas de 32 bits End If 

Ejemplos para usar la función de espera de Excel VBA

Puede descargar esta plantilla de Excel de VBA Wait aquí - VBA Wait Excel Template

Ejemplo 1

Suponga que está trabajando en Excel al mediodía a las 14:30:00 y desea que su código se pause hasta que la hora sea 14:40:00. Puede utilizar el siguiente código.

Código:

 Sub Wait_Example1 () Application.Wait "14:40:00" End Sub 

El código evitará que su Excel funcione hasta que llegue la hora 14:40:00 en su sistema operativo. Proporcionar un tiempo como este es peligroso porque no siempre trabajamos a partir de las 14:30:00, sigue variando todo el tiempo.

Digamos que cada vez que ejecuta el código y desea esperar 2 minutos, ¿cómo se refiere a esto en su código?

Entonces, podemos usar la función VBA NOW con la función TIME VALUE para ingresar la hora especificada desde la hora actual.

Solo para recordarle que la función NOW () devuelve la fecha y hora actuales según su sistema informático. La función TIMEVALUE representa la hora desde las 00:00:00 hasta las 23:59:59, es decir, 11:59:59 PM en formato de 24 horas. Convierte el valor de la cadena en un valor de tiempo.

Por ejemplo, NOW () + TIMEVALUE (00:02:30) significa Hora actual + 2 min 30 seg.

Si la hora actual es 14:25:30, entonces será 14:28:00.

Para detener o pausar la ejecución de su código desde la hora actual hasta los próximos 10 minutos, puede usar el siguiente código.

Código:

 Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub 

Es importante usar una función NOW () para una pausa precisa; de lo contrario, es probable que su libro de Excel se detenga hasta la medianoche. Sin embargo, podemos salir del método de pausa en cualquier momento presionando la tecla Esc o la tecla Break.

Ejemplo # 2

Espere 10 segundos cada vez que se ejecute el bucle

El método de espera se usa bien con bucles. Hay situaciones en las que es posible que deba esperar 10 segundos cada vez que se ejecuta el bucle. Por ejemplo, mire los datos a continuación.

Para calcular Beneficio = (Ventas - Costo), desea crear un ciclo y después de cada ciclo, desea esperar 10 segundos para verificar si el resultado es exacto o no. El siguiente código hará eso.

Código:

 Sub Wait_Example3 () Dim k As Integer For k = 2 To 9 Cells (k, 4) .Value = Cells (k, 2) - Cells (k, 3) Application.Wait (Now () + TimeValue ("00:00 : 10 ")) Siguiente k Fin Sub 

Este código calculará la columna de ganancias línea por línea. Después de completar la primera línea, esperará 10 segundos antes de calcular la siguiente línea.

VBA Sleep vs VBA Wait

VBA SUEÑOVBA ESPERA
No es una función incorporada de VBA, necesita un código especial para acceder a esta función.Es una función incorporada de VBA, no requiere ningún código especial para acceder a esta función.
El sueño requiere milisegundos como marco de tiempo.Esperar requiere un marco de tiempo regular.
Podemos retrasar el código en milisegundos.Podemos retrasar solo en segundos enteros.