Excel VBA Sleep-funktion för att pausa din makrokod

Innehållsförteckning

Excel VBA Sleep-funktion

VBA Sleep- funktion är en Windows-funktion som finns under DLL-filer i Windows som används för att stoppa eller pausa makroproceduren från att köras under en viss tid efter det att vi kan återuppta programmet.

Det finns situationer där vi måste pausa vår makrokörningsprocess för att slutföra andra uppsättningar uppgifter. Andra uppsättningar av uppgifter kan vara en del av vår kodning eller en del av ett annat makroförfarande, eller det kan ingå för det aktuella Excel-makrot. Hur kan du pausa programmet när det körs? Vi kan pausa procedurkoden under en tid som användaren har angett, och efter det kan vi återuppta programmet. Vi kan göra detta i VBA med hjälp av SLEEP-funktionen.

Vad gör VBA Sleep-funktion?

SOVA, som själva namnet säger, "sov en stund", "vila en stund", "pausa en tid," ledighet en stund, "osv … Sovfunktionen tillåter användare att pausa vår makrokod i millisekunder . Med hjälp av detta kan vi fördröja processen med makrokod.

Om du tror att vi har en inbyggd funktion som heter SLEEP, har du fel eftersom det inte finns någon sådan funktion i VBA. Snarare har vi en funktion som heter Sleep som Windows-funktion. Genom att ange en speciell uppsättning koder kan vi faktiskt kalla den här funktionen i VBA. I själva verket är det en funktion som finns i Windows DLL-filer, så vi måste deklarera API-nomenklaturen innan subrutinen startar i VBA.

Nedan är VBA-koden.

Koda:

# Om VBA7 sedan offentligt förklara PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'För 64-bitarsversioner av Excel # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds as Long)' För 32-bitarsversioner Excel #End If

Kopiera ovanstående och klistra in i din modul innan du börjar skriva makrokoderna. Det ska klistras in så här i din modul.

Exempel

Innan jag visar hur du skriver koden, låt mig berätta om sömnfunktionen lite mer. Det fördröjer processen i millisekunder. Så 1 sekund är lika med 1000 millisekunder, om du vill pausa i 10 sekunder ska den vara 10000 millisekunder.

Exempel 1

När API-koden har klistrats in innan Sub-proceduren startar skapar du ett makronamn.

Koda:

# Sub Sleep_Example1 () Avsluta sub

Förklara två variabler som en sträng.

Koda:

Dim StartTime As String Dim EndTime As String

Tilldela värdet på TIME-funktionen för StartTime- variabeln. Obs! TID i excel-funktionen returnerar aktuell tid.

Koda:

StartTime = Time

Nu kommer vi att visa detta meddelande i meddelandefältet VBA.

Koda:

StartTime = Time MsgBox StartTime

Nu pausar vi koden i tio sekunder med hjälp av sömnfunktionen. Som jag sa pausar den koden i millisekunder, så att pausa i 10 sekunder. Vi måste använda 10000 millisekunder.

Koda:

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

Använd nu den andra variabeln, EndTime, och tilldela aktuell tid.

Koda:

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

Nu innehåller två variabler StartTime och EndTime makrot starttid och sluttid . Kör detta makro; först ser vi makrotid, dvs. aktuell tid i ditt system.

Klicka på OK. Den kommer att sova i 10 sekunder. Du kan se buffersymbolen.

Efter 10 sekunder börjar den återuppta koden så den visar sluttiden, dvs efter att ha väntat i 10 sekunder, vad är den aktuella tiden nu.

Nu kan du se makro startat klockan 10:54:14 och slutade klockan 10:54:24, dvs. exakt 10-sekundersskillnaden är där. Under de 10 sekunderna pausar VBA koden.

Exempel # 2 - Viloläge i öglor

Sömn används bäst med öglor i VBA. Till exempel vill jag infoga serienummer från 1 till 10 med Do while loop i VBA.

Efter att ha satt in ett nummer ska min kod vänta i 3 sekunder, så när slingan går 10 gånger ska den vara totalt 30 sekunder.

Koda:

Sub Sleep_Example2 () Dim k As Integer k = 1 Gör medan k <= 10 celler (k, 1). Värde = kk = k + 1 Sleep (3000) '1000 millisekunder är 1 sekund så 3000 är lika med 3 sekunder Loop End Sub

Kör den här koden och du måste vänta i minst 30 sekunder för att slutföra processen.

Använd nedanstående kod för att spåra den exakta tiden.

Koda:

Sub Sleep_Example2 () Dim k Som heltal Dim StartTime Som String Dim EndTime Som String StartTime = Time MsgBox "Din kod startade vid" & StartTime k = 1 Gör medan k <= 10 celler (k, 1) .Värde = kk = k + 1 Sleep (3000) 1000 millisekunder är 1 sekund så 3000 är lika med 3 sekunder Loop EndTime = Time MsgBox "Din kod slutade vid" & EndTime End Sub

Den här koden visar två meddelanderutor, den första visar starttiden och den andra visar sluttiden.

Obs! När du kör den här koden kan du inte använda excel. Även flyktangenten fungerar inte.

Intressanta artiklar...