Funció d'espera de VBA | Com s'utilitza el mètode d'espera d'Excel VBA?
Funció d'espera d'Excel VBA
VBA Espera és una funció integrada que s'utilitza per aturar l'execució del codi durant un temps especificat, és molt similar al que fem en una ordre de suspensió i per pausar un codi que fem servir el mètode application.wait.
Alguns dels codis requereixen una mica abans de passar a la següent línia de codi a causa de la realització d'altres tasques. En aquests casos, hem d’aturar el codi que s’executarà i fer una pausa durant un temps i continuar amb l’execució. Podem posar en pausa el codi que s’executarà de dues maneres: la primera és el mètode “Sleep” i la segona és el mètode “Wait”. Al nostre article anterior, hem parlat del mètode "VBA Sleep" per aturar el codi VBA.
"Espereu", ja que el propi nom diu que contindrà el codi macro que s'executarà en un període de temps especificat. Mitjançant aquest mètode hem d’especificar l’hora en què s’ha de posar en pausa el nostre codi; a continuació, veurem exemples.
La sintaxi de la funció WAIT és la següent.
Hem d’esmentar la quantitat de temps en què el nostre codi s’ha d’aturar. Com es pot veure al final, diu Booleà, això significa que retorna el resultat com a valors booleans, és a dir, CERT o FALS.
Fins que no ha arribat l'hora especificada, diu FALS i en el moment en què ha arribat l'hora especificada, torna TRUE.
Això és diferent de la funció SLEEP perquè WAIT és una funció integrada on SLEEP és una funció de Windows. Abans d’accedir a la funció SLEEP, hem d’esmentar el següent codi a la part superior del mòdul. Però WAIT no ho requereix.
Codi:
# If VBA7 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) ‘Per a sistemes de 64 bits # Else Public Declare Sub Sleep Lib" kernel32 "(ByVal dwMilliseconds As Long)‘ Per a sistemes de 32 bits
Exemples per utilitzar la funció d'espera d'Excel VBA
Podeu descarregar aquesta plantilla VBA Wait Excel aquí: plantilla VBA Wait ExcelExemple 1
Suposem que esteu treballant en un dia Excel a les 14:30:00 i voleu que el vostre codi es posi en pausa fins que passi les 14:40:00. Podeu utilitzar el codi següent.
Codi:
Sub Espera_Exemple1 () Aplicació. Espera "14:40:00" Finalitza Sub
El codi deixarà de funcionar Excel fins que arribi a les 14:40:00 al vostre sistema operatiu. Proporcionar un temps així és perillós perquè no sempre treballem a partir de les 14:30:00, però sempre varia.
Diguem que cada vegada que executeu el codi que voleu esperar 2 minuts, com es fa referència al codi?
Per tant, podem utilitzar la funció VBA NOW amb la funció TIME VALUE per introduir l’hora especificada a partir de l’hora actual.
Només per recordar-vos que la funció ARA () retorna la data i hora actual segons el vostre sistema informàtic. La funció TIMEVALUE representa l’hora de 00:00:00 a 23:59:59 és a dir, 11:59:59 PM en format de 24 hores. Converteix el valor de la cadena en un valor de temps.
Per exemple NOW () + TIMEVALUE (00:02:30) significa l'hora actual + 2 min 30 segons.
Si l’hora actual és a les 14:25:30 es converteix en 14:28:00.
Per aturar o aturar l'execució del codi des de l'hora actual fins als propers 10 minuts, podeu utilitzar el codi següent.
Codi:
Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub
És important utilitzar una funció NOW () per a una pausa precisa, en cas contrari, hi ha possibilitats que el vostre llibre de treball Excel es posi en pausa fins a mitjanit. Tot i això, podem sortir del mètode de pausa en qualsevol moment del temps prement el botó Esc clau o Clau de trencament.
Exemple 2
Espereu 10 segons cada vegada que s'executa el bucle
El mètode d'espera s'utilitza bé amb els bucles. Hi ha situacions en què és possible que hagueu d'esperar 10 segons cada vegada que s'executa el bucle. Per exemple, mireu les dades següents.
Per calcular el benefici = (Vendes - Cost) voleu crear un bucle i, després de cada bucle, voleu esperar 10 segons per comprovar si el resultat és exacte o no. El codi següent ho farà.
Codi:
Subespera_exemple3 () Dim k com enter per a k = 2 a 9 cel·les (k, 4). Valor = Cel·les (k, 2) - Aplicacions de cel·les (k, 3). Espereu (Ara () + TimeValue ("00:00 : 10 ")) Següent k Final sub
Aquest codi calcularà la columna de beneficis línia per línia. Després de completar la primera línia, esperarà 10 segons abans de calcular la següent línia.
VBA Sleep vs VBA Wait
VBA SLEEP | VBA ESPERA | |
No és una funció integrada VBA, necessita un codi especial per accedir a aquesta funció. | És una funció integrada en VBA, que no requereix cap codi especial per accedir a aquesta funció. | |
El son requereix mil·lisegons com a període de temps. | L’espera requereix un període de temps regular. | |
Podem retardar el codi en mil·lisegons | Només podem retardar en segons sencers. |