Agregar retraso durante la ejecución del código usando VBA

Glen Alfaro 30 enero 2023
  1. Ejemplo de agregar tiempo de retraso en VBA con el comando esperar
  2. Implementar un esquema de actualización automática mediante el comando wait
Agregar retraso durante la ejecución del código usando VBA

Cuando se trata de cálculos y procesos complejos con VBA, el programador debe tener en cuenta que algunos algoritmos son demasiado pesados ​​y necesitan algo de tiempo para procesarse. El problema surge cuando el proceso actual aún se está ejecutando, pero luego el compilador de VBA continúa con el siguiente proceso. En ese caso, se producirían desbordamientos y errores.

Una aplicación típica de la demora es cuando se trata de herramientas de web scraping. El sitio web debe estar completamente cargado primero antes de raspar los datos. De lo contrario, se producirá un error. Otra aplicación de esto es cuando necesitamos ejecutar una macro regularmente durante un período de tiempo definido.

Este artículo demostrará cómo agregar tiempo de retraso usando el comando wait.

Sintaxis:

Application.Wait(Now + [delay time])

Donde:

[delay time] Especifica el tiempo de retardo necesario.

Ejemplo de agregar tiempo de retraso en VBA con el comando esperar

Sub DelayMe()
'Print the current time
Debug.Print Now

'Delay for 10 seconds start here
Application.Wait(Now + TimeValue("00:00:10"))

'Print the current time
Debug.Print Now

End Sub

Producción :

12/21/2021 4:41:25 PM 
12/21/2021 4:41:35 PM 

Implementar un esquema de actualización automática mediante el comando wait

El bloque de código a continuación demostrará la implementación de esquemas de actualización automática utilizando el comando wait. Llamará a la subrutina GetTimeNow cada 10 segundos.

Sub AutoUpdate()

'Main loop where the code execution takes place 
Do

'Add a delay for every call
Application.Wait(Now + TimeValue("00:00:10"))
'Calls the GetTimeNow subroutine
Call GetTimeNow
Loop

End Sub

Sub GetTimeNow

'Print the time at the time of the call.
Debug.Print "The current time is: " & Now

End Sub

Producción :

The current time is: 12/21/2021 4:59:30 PM
The current time is: 12/21/2021 4:59:48 PM
The current time is: 12/21/2021 5:00:01 PM
The current time is: 12/21/2021 5:00:16 PM