VBA-paus

Pausa VBA-koden från att köra

VBA Paus används för att pausa koden från att köra den under en viss tid och för att pausa en kod i VBA använder vi metoden application.wait.

När vi bygger stora VBA-projekt efter att ha utfört något kan vi behöva vänta en stund för att utföra andra uppgifter. I sådana scenarier hur pausar vi makrokoden för att göra vår uppgift? Vi kan pausa VBA-koden under en viss tidsperiod genom att använda två funktioner och dessa funktioner är "Vänta" och "Viloläge".

Hur pausar jag koden med hjälp av väntemetoden?

"Vänta" är den funktion vi använder i VBA för att hålla makrot igång under en viss tid. Genom att använda denna funktion måste vi nämna till vilken tid vår kod ska vänta.

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

Om du till exempel kör koden 13:00:00 om du anger tiden som “13:15:00” kommer makrot att hålla igång i 15 minuter.

Titta nu på argumentet med WAIT-funktionen i VBA.

I tidsargument måste vi nämna vid vilken tidpunkt vår kod ska pausa eller vänta.

Titta till exempel på nedanstående VBA-kod.

Koda:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait ("13:15:00") Range ("A3"). Value = " Till VBA "End Sub 

Kom ihåg att när jag kör den här koden är min systemtid 13:00:00, så snart jag kör koden kommer de två första raderna att köras, dvs.

Område ("A1"). Värde = "Hej" & Område ("A2"). Värde = "Välkommen"

Men om du tittar på nästa rad står det Application.Wait (“13:15:00”), så efter att ha utfört dessa rader har mitt makro pausats i 15 minuter, dvs från 13:00:00 väntar det tills mitt system tiden når 13:15:01.

När min systemtid når den tiden kommer den att köra resterande kodrader.

Område ("A3"). Värde = "Till VBA"

Detta är dock inte det bästa sättet att öva pauskoden, låt oss säga att du kör koden vid olika tidpunkter, då måste vi använda NU VBA-funktionen med TIDVÄRDE-funktionen.

Nu- funktionen returnerar det aktuella datumet och tiden enligt det system vi arbetar med.

TIME Value- funktionen håller tiden från 00:00:00 till 23:59:29.

Ok, antar att vi måste pausa koden i 10 minuter när vi kör koden, då kan vi använda koden nedan.

Koda:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Range (" A3 "). Value =" To VBA "End Sub 

Detta liknar föregående kod men den enda skillnaden är att vi har lagt till funktionen NU & TIDVÄRDE.

När vi kör den här koden kommer den att hålla eller pausa körningen i 10 minuter.

Hur pausar du VBA-koden med sömnmetoden?

Sömn är en komplicerad funktion i VBA eftersom den inte är en inbyggd funktion. Eftersom det inte är ett inbyggt för att göra det tillgängligt att använda måste vi lägga till koden nedan till toppen av vår modul.

Koda:

# Om VBA7 Publicerar sedan PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) # End If' For 32 Bit Systems 

Du behöver bara kopiera ovanstående kod och klistra in den överst i modulen.

Anledningen till att vi måste lägga till ovanstående kod eftersom SLEEP är en VBA-funktion som presenteras i Windows DLL-filer, så vi måste deklarera nomenklaturen innan vi börjar delproceduren.

Okej, låt oss titta på exemplet på SLEEP-funktionen nu.

Koda:

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

Först har vi förklarat två variabler som sträng.

 Dim StartTime As String Dim EndTime As String 

Sedan har vi tilldelat TIME excel-funktionen till StartTime-variabeln. TID-funktionen returnerar aktuell tid enligt systemet.

StartTime = Time

Sedan har vi tilldelat samma att visas i meddelandefältet.

MsgBox StartTime

Sedan har jag använt SLEEP-funktionen som viloläge (10000).

Här är 10000 millisekunder vilket är lika med 10 sekunder i VBA.

Äntligen har jag äntligen tilldelat variabeln EndTime en TIME-funktion till .

Nu har jag skrivit en kod för att visa tiden.

EndTime = Time

Detta visar skillnaden mellan starttid och sluttid.

Nu ska jag köra koden och se vilken starttid det är.

När jag kör koden är min systemtid 13:40:48 och nu kommer min kod att sova i 10 sekunder. I slutet är min tid som följer.

Så här kan vi pausa koden från att köra den under en viss tid.