Excel VBA Sleep-funksjon for å sette makrokoden på pause

Excel VBA søvnfunksjon

VBA Sleep- funksjon er en Windows-funksjon som er tilstede under Windows DLL-filer som brukes til å stoppe eller stoppe makroprosedyren fra å kjøre i en bestemt tid etter at en viss mengde vi kan gjenoppta programmet.

Det er situasjoner der vi trenger å stoppe vår makrokjøringsprosess for å fullføre andre sett med oppgaver. Andre sett med oppgaver kan være en del av kodingen vår eller en del av en annen makroprosedyre, eller det kan være input for den nåværende Excel-makroen. Hvordan kan du sette programmet på pause når det kjører? Vi kan stoppe prosedyren i en periode som er angitt av brukeren, og etter det kan vi gjenoppta programmet. Vi kan gjøre dette i VBA ved å bruke SLEEP-funksjonen.

Hva gjør VBA søvnfunksjon?

SOV som navnet i seg selv sier “sove i litt tid”, “hvile i noen tid”, “pause på tid”, fri i litt tid ”osv. Søvnfunksjon lar brukerne sette makrokoden på pause i millisekunder. Ved å bruke dette kan vi forsinke prosessen med makrokode.

Hvis du tror vi har en innebygd funksjon som heter SLEEP, tar du feil fordi det i VBA ikke er en slik funksjon, men vi har en funksjon som heter Sleep som en Windows-funksjon. Ved å legge inn et spesielt sett med kode kan vi faktisk kalle denne funksjonen i VBA. Faktisk er det en funksjon som er tilstede i Windows DLL-filer, så vi må erklære API-nomenklaturen før subrutinen starter i vba.

Nedenfor er VBA-koden.

Kode:

# Hvis VBA7 deretter offentlig erklære PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64-biters versjoner av Excel # Ellers Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' For 32-bit versjoner av Excel # Slutt hvis 

Kopier over og lim inn i modulen din før du begynner å skrive makrokodene. Det skal limes inn slik i modulen din.

Eksempel

Før jeg viser deg hvordan du skriver koden, la meg fortelle deg litt om søvnfunksjonen. Det forsinker prosessen i millisekunder. Så 1 sekund er lik 1000 millisekunder. Hvis du vil pause i 10 sekunder, skal det være 10000 millisekunder.

Du kan laste ned denne VBA Sleep Excel-malen her - VBA Sleep Excel-mal

Eksempel 1

Når API-koden er limt inn før starten av underprosedyren, lager du et makronavn.

Kode:

# Sub Sleep_Example1 () End Sub 

Deklarer to variabler som en streng.

Kode:

 Dim StartTime As String Dim EndTime As String 

For StartTime- variabelen tildeles verdien av TIME-funksjonen. Merk: TID i excel-funksjonen returnerer gjeldende tid.

Kode:

StartTime = Tid

Nå vil vi vise denne meldingen i meldingsboksen VBA.

Kode:

StartTime = Time MsgBox StartTime

Nå vil vi sette koden på pause i 10 sekunder ved hjelp av søvnfunksjonen. Som jeg fortalte, stopper koden i millisekunder, så for å stoppe i 10 sekunder må vi bruke 10000 millisekunder.

Kode:

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

Bruk nå den andre variabelen EndTime og tildel gjeldende tid.

Kode:

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

Nå vil to variabler StartTime og EndTime holde makroens starttid og sluttid. Kjør denne makroen, først vil vi se makrot starttid, dvs. nåværende tid i systemet ditt.

Klikk på OK, den vil sove i 10 sekunder. Du kan se buffersymbolet.

Etter 10 sekunder vil den begynne å gjenoppta koden, så vil den vise sluttiden, dvs. etter å ha ventet i 10 sekunder hva som er nåværende tidspunkt.

Nå kan du se makro startet kl 10:54:14 og avsluttet kl 10:54:24 dvs. nøyaktig 10 sekunders forskjell er der. I løpet av de ti sekundene setter VBA koden i gang.

Eksempel 2 - Søvnfunksjon i sløyfer

Sleep is best used with loops in VBA. For example, I want to insert serial numbers from 1 to 10 using Do while loop in VBA.

After inserting the one number my code should wait for 3 seconds, so when the loop runs for 10 times it should be 30 seconds in total.

Code:

 Sub Sleep_Example2() Dim k As Integer k = 1 Do While k <= 10 Cells(k, 1).Value = k k = k + 1 Sleep (3000) '1000 milliseconds is 1 second so 3000 is equal to 3 seconds Loop End Sub 

Run this code and you have to wait for a minimum of 30 seconds to complete the process.

To track the exact time use the below code.

Code:

 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 = k k = k + 1 Sleep (3000) '1000 milliseonds is 1 second so 3000 is equal to 3 seconds Loop EndTime = Time MsgBox "Your Code Ended at " & EndTime End Sub 

This code will display you 2 message box, the first one will show the starting time and the second one will show the end time.

Note: While running this code, you cannot use excel, even the escape key will not work.