Funzione di sospensione VBA di Excel per sospendere il codice macro

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, oppure 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, dopodiché possiamo riprendere il programma. Possiamo farlo in VBA utilizzando la funzione SLEEP.

Che cosa fa la funzione di sospensione VBA?

SLEEP, come dice il nome stesso, "sleep for some time", "rest for some time", "pause for a 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, allora ti sbagli perché, in VBA, non esiste tale funzione. Piuttosto, abbiamo una funzione chiamata Sleep come funzione di Windows. Inserendo un insieme speciale di codici, 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 versioni a 64 bit di Excel #Else 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 mostrarti il ​​modo di scrivere il codice, lascia che ti parli un po 'di più 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.

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 usando la funzione sleep. Come ho detto, mette in pausa il codice in millisecondi, quindi fa una 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, cioè 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 in modo da mostrare l'ora di fine, ovvero, dopo aver atteso 10 secondi, qual è l'ora attuale.

Ora puoi vedere la macro iniziata alle 10:54:14 e terminata alle 10:54:24, ovvero la differenza di 10 secondi è esattamente 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 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 almeno 30 secondi per completare il processo.

Per monitorare l'ora esatta, utilizzare il codice seguente.

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 ti mostrerà 2 finestre 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à.

Articoli interessanti...