Pausa VBA

Metti in pausa il codice VBA dall'esecuzione

VBA Pause viene utilizzato per sospendere l'esecuzione del codice per un determinato periodo di tempo e per mettere in pausa un codice in VBA utilizziamo il metodo application.wait.

Quando creiamo progetti VBA di grandi dimensioni dopo aver eseguito qualcosa, potrebbe essere necessario attendere un po 'di tempo per svolgere altre attività. In tali scenari come mettiamo in pausa il codice macro per svolgere il nostro compito? Possiamo mettere in pausa il codice VBA per un periodo di tempo specificato utilizzando due funzioni e quelle funzioni sono "Attendi" e "Sospendi".

Come mettere in pausa il codice utilizzando il metodo di attesa?

"Attendi" è la funzione che utilizziamo in VBA per mantenere la macro in esecuzione per un determinato periodo di tempo. Applicando questa funzione dobbiamo menzionare fino a che ora il nostro codice dovrebbe aspettare.

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

Ad esempio, se si esegue il codice alle 13:00:00 se si specifica l'ora come "13:15:00", la macro verrà mantenuta in esecuzione per 15 minuti.

Ora, guarda l'argomento della funzione WAIT in VBA.

Nella discussione del tempo dobbiamo menzionare a che ora il nostro codice dovrebbe mettere in pausa o attendere.

Ad esempio, guarda il codice VBA sottostante.

Codice:

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

Ricorda che durante l'esecuzione di questo codice il mio tempo di sistema è 13:00:00, non appena eseguo il codice eseguirà le prime due righe, ad es.

Intervallo ("A1"). Valore = "Ciao" e Intervallo ("A2"). Valore = "Benvenuto"

Ma se guardi la riga successiva dice Application.Wait ("13:15:00"), quindi dopo aver eseguito le attività di quelle righe la mia macro verrà messa in pausa per 15 minuti, cioè dalle 13:00:00 aspetterà fino a quando il mio sistema il tempo raggiunge le 13:15:01.

Una volta che l'ora del mio sistema raggiunge quel tempo, eseguirà le restanti righe di codice.

Intervallo ("A3"). Valore = "A VBA"

Tuttavia, questo non è il modo migliore per esercitarsi con il codice di pausa, diciamo che stai eseguendo il codice in momenti diversi, quindi dobbiamo utilizzare la funzione NOW VBA con la funzione TIME VALUE.

Ora la funzione restituisce la data e l'ora correnti in base al sistema su cui stiamo lavorando.

La funzione TIME Value mantiene l'ora da 00:00:00 a 23:59:29.

Ok, supponiamo di dover mettere in pausa il codice per 10 minuti ogni volta che eseguiamo il codice, quindi possiamo usare il codice seguente.

Codice:

 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 

Questo è simile al codice precedente, ma l'unica differenza è che abbiamo aggiunto la funzione NOW & TIME VALUE.

Ogni volta che eseguiamo questo codice, verrà sospesa o sospesa l'esecuzione per 10 minuti.

Come mettere in pausa il codice VBA utilizzando il metodo di sospensione?

Il sonno è una funzione complicata in VBA perché non è una funzione incorporata. Poiché non è un built-in per renderlo disponibile per l'uso, dobbiamo aggiungere il codice seguente all'inizio del nostro modulo.

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) # End If' For 32 Bit Systems 

Devi solo copiare il codice sopra e incollarlo nella parte superiore del modulo.

Il motivo per cui è necessario aggiungere il codice precedente perché SLEEP è una funzione VBA presentata nei file DLL di Windows, quindi è necessario dichiarare la nomenclatura prima di avviare la sottoprocedura.

Ok, diamo ora un'occhiata all'esempio della funzione SLEEP.

Codice:

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

Innanzitutto, abbiamo dichiarato due variabili come String.

 Dim StartTime As String Dim EndTime As String 

Quindi abbiamo assegnato la funzione TIME excel alla variabile StartTime. La funzione TIME restituisce l'ora corrente come da sistema.

StartTime = Ora

Quindi abbiamo assegnato lo stesso da mostrare nella finestra del messaggio.

MsgBox StartTime

Quindi ho applicato la funzione SLEEP come Sleep (10000).

Qui 10000 è millisecondi che è uguale a 10 secondi in VBA.

Poi, finalmente, ho assegnato l' ennesima funzione TIME alla variabile EndTime .

Ora di nuovo ho scritto un codice per mostrare l'ora.

EndTime = Ora

Questo mostrerà la differenza tra l'ora di inizio e l'ora di fine.

Ora eseguirò il codice e vedrò qual è l'ora di inizio.

Quando eseguo il codice l'ora del mio sistema è 13:40:48 e ora il mio codice dormirà per 10 secondi. Alla fine, il mio tempo è il seguente.

Quindi, in questo modo, possiamo sospendere l'esecuzione del codice per un periodo di tempo specificato.