VBA sömnfunktion

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 uppgifter kan vara en del av vår kodning eller en del av ett annat makroförfarande eller så kan det matas in för det aktuella Excel-makrot. Hur kan du pausa programmet när det körs? Vi kan pausa procedurkoden under en viss tid som användaren specificerat 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 namnet i sig säger “sova under en tid”, “vila en stund”, “pausa för tid”, ledigt en stund ”osv. Vilolägesfunktionen låter användare 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 så har du fel eftersom det inte finns någon sådan funktion i VBA utan vi har en funktion som heter Sleep som Windows-funktion. Genom att ange en speciell uppsättning kod 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 inleds i vba.

Nedan är VBA-koden.

Koda:

# Om VBA7 Publicerar sedan PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) "För 64-bitarsversioner av Excel # Annars Publicerar Dec Sub Sub Lib" kernel32 "(ByVal dwMilliseconds As Long)" För 32-bitarsversioner av Excel # Avsluta om 

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 dig 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.

Du kan ladda ner denna VBA Sleep Excel-mall här - VBA Sleep Excel-mall

Exempel nr 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 

Till StartTime- variabel tilldela värdet för TIME-funktionen. 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 sa pausar koden i millisekunder så för att pausa i 10 sekunder måste vi 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 har två variabler StartTime och EndTime makrot starttid och sluttid . Kör detta makro, först ser vi makrot starttid, dvs. aktuell tid i ditt system.

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

Efter 10 sekunder kommer koden att återupptas så den visar sluttiden, dvs. efter att ha väntat i 10 sekunder vad som är aktuell tid 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 sömn (3000) 1000 millisekunder är 1 sekund så 3000 är lika med 3 sekunder Loop EndTime = Time MsgBox "Din kod slutade vid" & EndTime End Sub 

Denna kod 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.