Excel VBA Sleep-funktion til at sætte din makrokode på pause

Indholdsfortegnelse

Excel VBA Sleep-funktion

VBA Sleep- funktion er en Windows-funktion, der er til stede under Windows DLL-filer, der bruges til at stoppe eller stoppe makroproceduren i at køre i et bestemt tidsrum, efter at en vis mængde vi kan genoptage programmet.

Der er situationer, hvor vi har brug for at sætte vores makrokøringsproces på pause for at fuldføre andre sæt opgaver. Andre sæt opgaver kan være en del af vores kodning eller en del af en anden makroprocedure, eller det kan være input til den aktuelle excel-makro. Hvordan kan du sætte programmet på pause, når det kører? Vi kan sætte procedurekoden på pause i et stykke tid, der er angivet af brugeren, og derefter kan vi genoptage programmet. Vi kan gøre dette i VBA ved hjælp af SLEEP-funktionen.

Hvad gør VBA Sleep-funktion?

SLEEP, som selve navnet siger, "sov i et stykke tid", "hvil i et stykke tid", "pause et stykke tid," fritid i et stykke tid osv. … Søvnfunktionen giver brugerne mulighed for at stoppe vores makrokode i millisekunder. . Ved hjælp af dette kan vi forsinke processen med makro-kode.

Hvis du tror, ​​vi har en indbygget funktion kaldet SLEEP, tager du fejl, fordi der i VBA ikke er sådan en funktion. Vi har snarere en funktion kaldet Sleep som en windows-funktion. Ved at indtaste et specielt sæt koder kan vi faktisk kalde denne funktion i VBA. Faktisk er det en funktion, der findes i Windows DLL-filer, så vi er nødt til at erklære API-nomenklaturen inden subrutinen i VBA starter.

Nedenfor er VBA-koden.

Kode:

#Hvis VBA7 derefter offentlig erklærer PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64-bit versioner af Excel #Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds as Long)' For 32-bit versioner af Excel #End Hvis

Kopier ovenstående og indsæt i dit modul, før du begynder at skrive makrokoderne. Det skal indsættes sådan i dit modul.

Eksempel

Før jeg viser dig, hvordan du skriver koden, skal jeg fortælle dig lidt om søvnfunktionen. Det forsinker processen i millisekunder. Så 1 sekund er lig med 1000 millisekunder. Hvis du vil holde pause i 10 sekunder, skal det være 10000 millisekunder.

Eksempel nr. 1

Når API-koden er indsat inden starten af ​​underproceduren, skal du oprette et makronavn.

Kode:

# Sub Sleep_Example1 () Afslut sub

Erklær to variabler som en streng.

Kode:

Dim StartTime As String Dim EndTime As String

Til StartTime- variablen skal du tildele værdien af ​​TIME-funktionen. Bemærk: TID i excel-funktionen returnerer den aktuelle tid.

Kode:

StartTime = Tid

Nu viser vi denne meddelelse i meddelelsesboksen VBA.

Kode:

StartTime = Time MsgBox StartTime

Nu stopper vi koden i 10 sekunder ved hjælp af dvalefunktionen. Som jeg fortalte, sætter den koden på pause i millisekunder, så at sætte en pause i 10 sekunder. Vi skal bruge 10000 millisekunder.

Kode:

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

Brug nu den anden variabel, EndTime, og tildel den aktuelle 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

Nu indeholder to variabler StartTime og EndTime makro starttid og sluttid. Kør denne makro; først ser vi makro starttid, dvs. aktuel tid i dit system.

Klik på OK. Den vil sove i 10 sekunder. Du kan se buffersymbolet.

Efter 10 sekunder begynder den at genoptage koden, så den viser sluttiden, dvs. efter at have ventet i 10 sekunder, hvad er det aktuelle tidspunkt nu.

Nu kan du se makro startet kl. 10:54:14 og sluttede kl. 10:54:24, dvs. Præcis 10-sekunders forskellen er der. I disse 10 sekunder sætter VBA koden på pause.

Eksempel # 2 - Dvalefunktion i sløjfer

Søvn bruges bedst med sløjfer i VBA. For eksempel vil jeg indsætte serienumre fra 1 til 10 ved hjælp af Do while-loop i VBA.

Efter at have indsat det ene nummer skal min kode vente i 3 sekunder, så når sløjfen løber 10 gange, skal den være i alt 30 sekunder.

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 equivalent to 3 seconds Loop End Sub

Kør denne kode, og du skal vente i mindst 30 sekunder for at afslutte processen.

Brug nedenstående kode for at spore det nøjagtige tidspunkt.

Kode:

Sub Sleep_Example2 () Dim k Som heltal Dim StartTime Som String Dim EndTime Som String StartTime = Time MsgBox "Din kode startede ved" & StartTime k = 1 Gør mens k <= 10 celler (k, 1) .Værdi = kk = k + 1 søvn (3000) '1000 millisekunder er 1 sekund, så 3000 er lig med 3 sekunder Loop EndTime = Time MsgBox "Din kode sluttede ved" & EndTime End Sub

Denne kode viser dig 2 beskedfelter, den første viser starttidspunktet, og den anden viser sluttidspunktet.

Bemærk: Når du kører denne kode, kan du ikke bruge excel. Selv flugtnøglen fungerer ikke.

Interessante artikler...