viernes, 18 de marzo de 2022

Estableciendo una pausa entre intrucciones mediante VBA para Microsoft Excel.

Estableciendo una pausa entre instrucciones mediante VBA para Microsoft Excel. 

El tercer elemento que necesitaremos para entender los bucles es la posibilidad de reproducirlo a cámara lenta.

Para ello lo que haremos es establecer una pausa entre las instrucciones.



El código usado en el ejemplo es el siguiente:



Primero mediante la instrucción Now se puede obtener la fecha y la hora actual.


Este es el aspecto que tiene.


TimeValue nos permite transformar una cadena de texto en un valor tipo fecha hora.


Mediante un MsgBox vemos su aspecto.



Si unimos estas dos instrucciones, podemos conseguir que mediante un condicional, no se ejecute la siguiente instrucción hasta que pase una cantidad de tiempo que sumemos al momento actual.

Suele sumarse un número de segundos a Now.

En el ejemplo sumamos 5 segundos  TimeValue("00:00:05")



Se muestra un primer mensaje, y tras pulsar el botón Aceptar ....

Tras cinco angustiosos segundos de espera, se ejecuta la siguiente instrucción, mostrando el segundo mensaje.


Usaremos esta técnica para poder ver como se van ejecutando  cada segundo las instrucciones en los bucles, ya que de forma contraria podría parecer que se ejecutan en un único paso.


Aquí tenéis el código VBA completo por si lo queréis copiar:


Option Explicit

Sub establecerPausa()

'con Now obtenemos la fecha y hora actual

MsgBox (Now)


'TimeValue permite transformar una cadena de texto en un valor Time de VBA

'TimeValue ("00:00:01") representa 1 segundo

MsgBox (TimeValue("00:00:01"))



'Application.Wait estable una pausa en el código hasta la fecha y hora indicadas

'Application.Wait(TimeValue("31/12/2999 00:00:00"))

'solo se ejecuratá el día de fin de año del año 2999


'Por lo tanto, si al momento actual Now le sumamos un segundo,

'estaremos creando una pausa

'en este caso vamos a establecer una pausa de 5 segundos


MsgBox ("Mensaje Uno.")


If Application.Wait(Now + TimeValue("00:00:05")) Then

    MsgBox ("Mensaje Dos.")

End If

    

End Sub

No hay comentarios:

Publicar un comentario