Funzioni VBA Wait & Sleep - Pausa/Ritardo Codice VBA

Questo tutorial dimostrerà come mettere in pausa/ritardare il codice utilizzando le funzioni Wait e Sleep in VBA.

Quando creiamo programmi VBA di grandi dimensioni che eseguono molti calcoli, o forse addirittura chiamiamo l'esecuzione di un programma esterno, potremmo richiedere che il nostro codice VBA smetta di funzionare per un periodo di tempo specifico mentre è in corso il processo esterno. VBA ha alcuni metodi disponibili per raggiungere questo obiettivo.

Utilizzo del metodo Application.Wit

Se abbiamo bisogno di mettere in pausa l'esecuzione della nostra macro per un po' di tempo o fino a quando non è stato raggiunto un tempo specificato prima di eseguire il passaggio successivo, possiamo usare il Applicazione.Attendi metodo. Questo potrebbe essere utile, ad esempio, se abbiamo automatizzato un processo di accesso a un sito Web e abbiamo bisogno di attendere alcuni secondi fino al caricamento della pagina prima che la nostra macro continui a funzionare.

Aspetta 1 secondo

Includendo questa riga nella macro, la sua esecuzione verrà messa in pausa per circa 1 secondo:

1 Application.Wait (Ora + TimeValue("0:00:01"))

Aspetta fino

In alcuni casi sarà necessario attendere un'ora specifica. Con questa riga sotto la tua macro non procederà prima delle 9:00:

1 Applicazione.Attendi "09:00:00"

Si prega di notare che il Applicazione.Attendi non accetta ritardi inferiori a 1 secondo.

Programmazione VBA | Il generatore di codice funziona per te!

Uso del metodo del sonno

Se hai bisogno di un modo più preciso per mettere in pausa la tua macro, puoi usare il metodo Sleep.

Sleep è una funzione API di Windows, ovvero non fa parte di VBA. È possibile accedervi utilizzando una dichiarazione di dichiarazione speciale.

Se stai utilizzando la versione a 64 bit di Microsoft Office, puoi inserire la seguente istruzione in un nuovo modulo o all'inizio del modulo (non direttamente nella subroutine) in cui desideri utilizzare la funzione Sleep:

1 Dichiara pubblico PtrSafe Sub Sleep Lib "kernel32" (ByVal Millisecondi As LongPtr)

Con la versione a 32 bit usa questa riga:

1 Public Dichiara Sub Sleep Lib "kernel32" (ByVal Millisecondi As LongPtr)

Dopo aver dichiarato la funzione Sleep, hai accesso ad essa nelle tue subroutine in questo modo:

1 Dormire 10000

Con questa riga sopra la tua macro verrà messa in pausa per 10.000 millisecondi, ovvero 10 secondi.

Utilizzo di un loop con Do Events

Il grande svantaggio dell'utilizzo dei metodi Wait e Sleep è che l'utente non può fare nulla in Excel mentre aspetta che la macro continui. Un utente potrebbe pensare che Excel abbia smesso di rispondere e mentre l'utente può quindi utilizzare Ctl+Pausa interrompere la macro, questo vanifica lo scopo di mettere una pausa nella macro per cominciare.

Per ovviare a questo problema, possiamo utilizzare un ciclo con un metodo chiamato DoEvents.

1234567 Sottotest pubblico()Dim I As LongPer i = 1 a 20000Intervallo ("A1"). Valore = iFaiEventiAvanti ioFine sottotitolo

Ora, mentre Excel esegue la macro sopra, l'utente può continuare a interagire con Excel - possiamo cambiare le schede o formattare le celle, ad esempio - in pratica, la macro continua a essere eseguita ma la schermata di Excel non è bloccata. Potremmo usare un ciclo simile per creare una funzione timer in Excel e incorporare il FaiEventi metodo in quello per sbloccare lo schermo mentre il timer è in esecuzione.

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave