Pausa VBA | Posa en pausa el codi VBA mitjançant la funció Sleep and Wait

Atura l'execució del codi VBA

Pausa VBA s’utilitza per posar en pausa el codi per executar-lo durant un temps especificat i per pausar un codi a VBA fem servir el mètode application.wait.

Quan construïm grans projectes VBA després de realitzar alguna cosa, potser haurem d’esperar un temps per fer altres tasques. En aquests casos, com posem en pausa el codi macro per fer la nostra tasca? Podem posar en pausa el codi VBA durant un període de temps especificat mitjançant dues funcions i aquestes funcions són "Espera" i "Dormir".

Com posar en pausa el codi mitjançant el mètode d'espera?

"Espera" és la funció que fem servir a VBA per mantenir la macro en execució durant un temps específic. En aplicar aquesta funció, hem d’esmentar fins a quina hora hauria d’esperar el nostre codi.

Podeu descarregar aquesta plantilla Excel de pausa VBA aquí: plantilla Excel de pausa VBA

Per exemple, si esteu executant el codi a les 13:00:00 si proporcioneu l'hora com a "13:15:00", mantindrà la macro en execució durant 15 minuts.

Ara mireu l’argument de la funció WAIT a VBA.

En l'argument del temps, hem d'esmentar a quina hora el nostre codi s'ha d'aturar o esperar.

Per exemple, mireu el codi VBA següent.

Codi:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait ("13:15:00") Range ("A3"). Value = " A VBA "Finalitzar sub 

Recordeu que mentre s'executa aquest codi, el temps del meu sistema és a les 13:00:00, tan bon punt executi el codi, s'executaran les dues primeres línies, és a dir,

Interval ("A1"). Valor = "Hola" i Interval ("A2"). Valor = "Benvingut"

Però si mireu la següent línia diu Application.Wait ("13:15:00"), de manera que després d'executar aquestes tasques de línies, la meva macro s'aturarà durant 15 minuts, és a dir, a partir de les 13:00:00, esperarà fins que el meu sistema el temps arriba a les 13:15:01.

Un cop el temps del meu sistema arribi a aquest moment, executarà les línies de codi restants.

Interval ("A3"). Valor = "A VBA"

Tanmateix, aquesta no és la millor manera de practicar el codi de pausa, suposem que s’executa el codi en diferents moments i que hem d’utilitzar la funció ARA VBA amb la funció TIME VALUE.

Ara La funció retorna la data i hora actuals segons el sistema en què estem treballant.

Valor TIME La funció manté el temps de 00:00:00 a 23:59:29.

D’acord, suposem que hem de posar en pausa el codi durant 10 minuts sempre que executem el codi i, a continuació, podem utilitzar el codi següent.

Codi:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Range (" A3 "). Value =" To VBA "End Sub 

Això és similar al codi anterior, però l'única diferència és que hem afegit la funció VALOR ARA I HORA.

Sempre que executem aquest codi, mantindrà o posarà en pausa l'execució durant 10 minuts.

Com posar en pausa el codi VBA mitjançant el mètode Sleep?

El son és una funció complicada a VBA perquè no és una funció integrada. Com que no és un dispositiu integrat per tal de fer-lo disponible, hem d'afegir el codi següent a la part superior del nostre mòdul.

Codi:

# If VBA7, aleshores el públic declara PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'per a sistemes de 64 bits # La resta, declara públicament Sleep Sleep Lib "kernel32" (ByVal dwMilliseconds Tan llarg) # End If' Per a sistemes de 32 bits 

Només heu de copiar el codi anterior i enganxar-lo a la part superior del mòdul.

El motiu pel qual hem d’afegir el codi anterior perquè SLEEP és una funció VBA presentada als fitxers DLL del Windows, per la qual cosa hem de declarar la nomenclatura abans d’iniciar el subprocés.

D’acord, vegem ara l’exemple de la funció SLEEP.

Codi:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Hora MsgBox StartTime Sleep (10000) EndTime = Hora MsgBox EndTime End Sub 

En primer lloc, hem declarat dues variables com a Cadena.

 Dim StartTime As String Dim EndTime As String 

A continuació, hem assignat la funció excel TIME a la variable StartTime. La funció TIME retorna l’hora actual segons el sistema.

StartTime = Hora

A continuació, hem assignat el mateix per mostrar al quadre de missatges.

MsgBox StartTime

Després he aplicat la funció SLEEP com a Sleep (10000).

Aquí 10000 són mil·lisegons que equivalen a 10 segons en VBA.

Després, per fi, he assignat una funció TIME més a la variable Temps esgotat.

Ara, de nou, he escrit un codi per mostrar l'hora.

EndTime = Hora

Això mostrarà la diferència entre l’hora d’inici i l’hora de finalització.

Ara executaré el codi i veuré quina és l’hora d’inici.

Quan executo el codi, el temps del meu sistema és 13:40:48 i ara el meu codi dormirà durant 10 segons. Al final, el meu temps és el següent.

Així, així, podem posar en pausa l’execució del codi durant un temps especificat.