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

Innholdsfortegnelse

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 fortsette 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 prosedyrekoden 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?

SOVE, som navnet selv sier, "sov en stund," "hvil en stund," "pause en stund," fri en stund, "osv … Søvnfunksjonen lar brukerne stoppe makrokoden vår 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 noen slik funksjon. Snarere har vi en funksjon som heter Sleep som en windows-funksjon. Ved å legge inn et spesielt sett med koder, 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 #Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' For 32-bit versjoner av Excel #End 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 om søvnfunksjonen litt mer. 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.

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, tildel 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 den koden i millisekunder, så for å stoppe i 10 sekunder. Vi må 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 makro 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, slik at den viser sluttiden, dvs. etter å ha ventet i 10 sekunder, hva er nåværende tidspunkt.

Nå kan du se makroen 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

Søvn brukes best med løkker i VBA. For eksempel vil jeg sette inn serienumre fra 1 til 10 ved hjelp av Do while loop i VBA.

Etter å ha satt inn ett nummer, skal koden min vente i 3 sekunder, så når sløyfen går 10 ganger, skal den være 30 sekunder totalt.

Kode:

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

Kjør denne koden, og du må vente i minst 30 sekunder for å fullføre prosessen.

Bruk koden nedenfor for å spore nøyaktig tid.

Kode:

Sub Sleep_Example2 () Dim k Som Integer Dim StartTime Som String Dim EndTime Som String StartTime = Time MsgBox "Koden din startet ved" & StartTime k = 1 Gjør mens k <= 10 celler (k, 1) .Value = kk = k + 1 søvn (3000) '1000 millisekunder er 1 sekund, så 3000 er lik 3 sekunder. Loop EndTime = Time MsgBox "Koden din avsluttet på"

Denne koden viser deg to meldingsbokser, den første viser starttid og den andre viser sluttid.

Merk: Når du kjører denne koden, kan du ikke bruke excel. Selv rømningsnøkkelen vil ikke fungere.

Interessante artikler...