Funzione di sospensione VBA

Funzione di sospensione VBA di Excel

La funzione VBA Sleep è una funzione di Windows presente nei file DLL di Windows che viene utilizzata per interrompere o sospendere l'esecuzione della procedura macro per un determinato periodo di tempo dopo che un determinato periodo di tempo possiamo riprendere il programma.

Ci sono situazioni in cui dobbiamo mettere in pausa il nostro processo di esecuzione della macro per completare altri set di attività. Altri set di attività potrebbero essere parte della nostra codifica o parte di altre procedure macro o potrebbero essere input per la macro Excel corrente. Come puoi mettere in pausa il programma quando è in esecuzione? Possiamo mettere in pausa il codice di procedura per un po 'di tempo specificato dall'utente e dopo un certo periodo di tempo possiamo riprendere il programma. Possiamo farlo in VBA utilizzando la funzione SLEEP.

Cosa fa la funzione di sospensione VBA?

SLEEP come dice il nome stesso "sleep for some time", "rest for some time", "pause for time", time off for some time "ecc. La funzione sleep consente agli utenti di mettere in pausa il nostro codice macro per millisecondi. Usando questo possiamo ritardare il processo del codice macro.

Se pensi che abbiamo una funzione incorporata chiamata SLEEP, ti sbagli perché in VBA non esiste una tale funzione, piuttosto abbiamo una funzione chiamata Sleep come funzione di Windows. Inserendo un set speciale di codice possiamo effettivamente chiamare questa funzione in VBA. Si tratta infatti di una funzione presente all'interno dei file DLL di Windows, quindi bisogna dichiarare la nomenclatura delle API prima dell'inizio della subroutine in vba.

Di seguito è riportato il codice VBA.

Codice:

# If VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Per le versioni a 64 bit di Excel # Altrimenti Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' Per versioni a 32 bit di Excel # End If 

Copia quanto sopra e incolla nel modulo prima di iniziare a scrivere i codici macro. Dovrebbe essere incollato in questo modo nel tuo modulo.

Esempio

Prima di mostrarvi il modo di scrivere il codice lasciate che vi parli della funzione sleep. Ritarda il processo in millisecondi. Quindi 1 secondo è uguale a 1000 millisecondi, se vuoi mettere in pausa per 10 secondi dovrebbe essere 10000 millisecondi.

Puoi scaricare questo modello Excel per il sonno VBA qui - Modello Excel per il sonno VBA

Esempio 1

Dopo aver incollato il codice API prima dell'inizio della procedura Sub, creare un nome di macro.

Codice:

# Sub Sleep_Example1 () End Sub 

Dichiara due variabili come stringa.

Codice:

 Dim StartTime As String Dim EndTime As String 

Per la variabile StartTime assegnare il valore della funzione TIME. Nota: TIME nella funzione Excel restituisce l'ora corrente.

Codice:

StartTime = Ora

Ora visualizzeremo questo messaggio nella finestra di messaggio VBA.

Codice:

StartTime = Ora MsgBox StartTime

Ora metteremo in pausa il codice per 10 secondi utilizzando la funzione sleep. Come ho detto, mette in pausa il codice in millisecondi, quindi per mettere in pausa per 10 secondi dobbiamo usare 10000 millisecondi.

Codice:

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

Ora usa la seconda variabile EndTime e assegna l'ora corrente.

Codice:

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

Ora due variabili StartTime e EndTime manterranno l'ora di inizio e l'ora di fine della macro. Esegui questa macro, all'inizio vedremo l'ora di inizio della macro, ovvero l'ora corrente nel tuo sistema.

Fare clic su OK, dormirà per 10 secondi. Puoi vedere il simbolo del buffer.

Dopo 10 secondi inizierà a riprendere il codice, quindi mostrerà l'ora di fine, ovvero dopo aver atteso per 10 secondi qual è l'ora attuale.

Ora puoi vedere la macro iniziata alle 10:54:14 e terminata alle 10:54:24, ovvero esattamente la differenza di 10 secondi è lì. In quei 10 secondi, VBA sospende l'esecuzione del codice.

Esempio n. 2 - Funzione sleep in loop

Il sonno viene utilizzato al meglio con i loop in VBA. Ad esempio, voglio inserire numeri di serie da 1 a 10 utilizzando Do while loop in VBA.

Dopo aver inserito un numero, il mio codice dovrebbe attendere 3 secondi, quindi quando il ciclo viene eseguito per 10 volte dovrebbe essere di 30 secondi in totale.

Codice:

 Sub Sleep_Example2 () Dim k As Integer k = 1 Do While k <= 10 Cells (k, 1) .Value = kk = k + 1 Sleep (3000) '1000 millisecondi è 1 secondo quindi 3000 è uguale a 3 secondi Fine ciclo Sub 

Esegui questo codice e devi attendere un minimo di 30 secondi per completare il processo.

Per tenere traccia dell'ora esatta utilizzare il codice sottostante.

Codice:

 Sub Sleep_Example2 () Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Your Code Started at" & StartTime k = 1 Do While k <= 10 Cells (k, 1) .Value = kk = k + 1 Sleep (3000) '1000 milliseonds è 1 secondo quindi 3000 è uguale a 3 secondi Loop EndTime = Time MsgBox "Your Code Ended at" & EndTime End Sub 

Questo codice mostrerà la tua 2 finestra di messaggio, la prima mostrerà l'ora di inizio e la seconda mostrerà l'ora di fine.

Nota: durante l'esecuzione di questo codice, non è possibile utilizzare Excel, anche il tasto Esc non funzionerà.