Agregar retraso durante la ejecución del código usando VBA
-
Ejemplo de agregar tiempo de retraso en VBA con el comando
esperar
-
Implementar un esquema de actualización automática mediante el comando
wait
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