Funzione di attesa VBA

Funzione di attesa VBA di Excel

VBA Wait è una funzione incorporata utilizzata per sospendere l'esecuzione del codice per un determinato periodo di tempo, è molto simile a ciò che facciamo in un comando sleep e per mettere in pausa un codice usiamo il metodo application.wait.

Alcuni codici richiedono del tempo prima di passare alla riga di codice successiva a causa del completamento di altre attività. In questi casi, dobbiamo interrompere l'esecuzione del codice e metterlo in pausa per un po ', quindi procedere con l'esecuzione. Possiamo mettere in pausa il codice da eseguire in due modi, il primo è il metodo "Sleep" e il secondo è il metodo "Wait". Nel nostro articolo precedente, abbiamo discusso il metodo "VBA Sleep" per mettere in pausa il codice VBA.

"Aspetta" come dice il nome stesso, manterrà il codice della macro da eseguire per un periodo di tempo specificato. Usando questo metodo abbiamo bisogno di specificare il tempo in cui il nostro codice deve fermarsi, vedremo esempi in seguito.

La sintassi della funzione WAIT è la seguente.

Dobbiamo menzionare la quantità di tempo in cui il nostro codice deve essere sospeso. Come puoi vedere alla fine dice Boolean, questo significa che restituisce il risultato come valori booleani cioè VERO o FALSO.

Fino all'arrivo dell'ora specificata, viene visualizzato FALSE e all'arrivo dell'ora specificata restituisce TRUE.

Ciò è diverso dalla funzione SLEEP perché WAIT è una funzione incorporata in cui SLEEP è una funzione di Windows. Prima di accedere alla funzione SLEEP dobbiamo menzionare il codice seguente nella parte superiore del modulo. Ma WAIT non lo richiede.

Codice:

# If VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' For 32 Bit Systems End If 

Esempi per utilizzare la funzione di attesa VBA di Excel

Puoi scaricare questo modello Excel di attesa VBA qui - Modello Excel di attesa VBA

Esempio 1

Supponi di lavorare in un Excel a metà giornata alle 14:30:00 e desideri che il tuo codice venga messo in pausa fino a quando l'ora non diventa 14:40:00. Puoi usare il codice sottostante.

Codice:

 Sub Wait_Example1 () Application.Wait "14:40:00" End Sub 

Il codice interromperà il funzionamento di Excel fino a quando l'ora non raggiunge le 14:40:00 nel tuo sistema operativo. Fornire un tempo come questo è pericoloso perché non lavoriamo sempre dalle 14:30:00, continua a variare continuamente.

Diciamo che ogni volta che esegui il codice vuoi aspettare 2 minuti, come fai a riferirlo nel tuo codice?

Quindi, possiamo usare la funzione VBA NOW con la funzione TIME VALUE per inserire l'ora specificata dall'ora corrente.

Solo per ricordarti che la funzione NOW () restituisce la data e l'ora correnti come da sistema del tuo computer. La funzione TIMEVALUE rappresenta l'ora dalle 00:00:00 alle 23:59:59, ovvero le 11:59:59 PM nel formato 24 ore. Converte il valore della stringa in un valore temporale.

Ad esempio NOW () + TIMEVALUE (00:02:30) significa Current Time + 2 min 30 sec.

Se l'ora corrente è 14:25:30, diventa 14:28:00.

Per interrompere o sospendere l'esecuzione del codice dall'ora corrente ai successivi 10 minuti, puoi utilizzare il codice seguente.

Codice:

 Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub 

È importante utilizzare una funzione NOW () per una pausa accurata, altrimenti è possibile che la cartella di lavoro di Excel sia sospesa fino a mezzanotte. Tuttavia, possiamo uscire dal metodo di pausa in qualsiasi momento premendo il tasto Esc o il tasto Break.

Esempio n. 2

Attendi 10 secondi ogni volta che viene eseguito il ciclo

Il metodo wait è ben utilizzato con i loop. In alcune situazioni potrebbe essere necessario attendere 10 secondi ogni volta che viene eseguito un ciclo temporale. Ad esempio, guarda i dati seguenti.

Per calcolare Profitto = (Vendite - Costo) si desidera creare un ciclo e dopo ogni ciclo, si desidera attendere 10 secondi per verificare se il risultato è accurato o meno. Il codice seguente lo farà.

Codice:

 Sub Wait_Example3 () Dim k As Integer For k = 2-9 Cells (k, 4) .Value = Cells (k, 2) - Cells (k, 3) Application.Wait (Now () + TimeValue ("00:00 : 10 ")) Avanti k End Sub 

Questo codice calcolerà la colonna del profitto riga per riga. Dopo il completamento della prima riga, attenderà 10 secondi prima di calcolare la riga successiva.

VBA Sleep vs VBA Wait

VBA SLEEPVBA WAIT
Non è una funzione integrata di VBA, necessita di un codice speciale per accedere a questa funzione.È una funzione integrata di VBA, non richiede alcun codice speciale per accedere a questa funzione.
Il sonno richiede millisecondi come lasso di tempo.L'attesa richiede un intervallo di tempo regolare.
Possiamo ritardare il codice in millisecondiPossiamo ritardare solo in secondi interi.