Función de espera de VBA - ¿Cómo utilizar el método de espera de Excel 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 algún tiempo, 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, discutimos el método "VBA Sleep" para pausar el código VBA.

“Espere”, como dice el propio nombre, mantendrá el código macro que se ejecutará en un período de tiempo especificado. Usando este método, necesitamos especificar el tiempo que nuestro código debe pausarse. 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 booleano. Esto significa que devuelve el resultado como valores booleanos, es decir, VERDADERO o FALSO.

Hasta que llega la hora especificada, dice FALSO y cuando llega el momento especificado, 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:

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

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

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 impedirá que su Excel funcione hasta que llegue la hora 14:40:00 en su sistema operativo. Ofrecer un tiempo como este es peligroso porque no siempre trabajamos a partir de las 14:30:00. Sigue variando todo el tiempo.

Digamos siempre que esté ejecutando el código. Quiere 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, 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 utilizar 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 ciclo. 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 frente a VBA Wait

VBA SUEÑO VBA 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.

Articulos interesantes...