VBA Vänta-funktion

Excel VBA Wait-funktion

VBA Wait är en inbyggd funktion som används för att pausa koden från att köras under en viss tid, det liknar mycket vad vi gör i ett sovkommando och för att pausa en kod som vi använder application.wait-metoden.

Vissa av koderna kräver någon gång innan du går vidare till nästa kodrad på grund av att andra uppgifter ska slutföras. I dessa fall måste vi stoppa koden som ska köras och pausa under en tid och sedan fortsätta med körningen. Vi kan pausa koden som ska köras på två sätt, den första är "Sleep" -metoden och den andra är "Wait" -metoden. I vår tidigare artikel har vi diskuterat "VBA Sleep" -metoden för att pausa VBA-koden.

"Vänta" som namnet själv säger att det kommer att hålla makrokoden som ska köras till en viss tidsram. Med den här metoden måste vi ange tiden vår kod ska pausa, vi kommer att se exempel härnäst.

Syntaxen för WAIT-funktionen är som följer.

Vi måste nämna hur lång tid vår kod ska pausa. Som du kan se i slutet står det booleskt, det betyder att det returnerar resultatet som booleska värden, dvs. SANT eller FALSKT.

Fram till den angivna tiden ankom står det FALSE och det ögonblick som den angivna tiden anlände returnerar SANT.

Detta skiljer sig från SLEEP-funktionen eftersom WAIT är en inbyggd funktion där SLEEP är en Windows-funktion. Innan vi går in i SLEEP-funktionen måste vi nämna koden nedan längst upp i modulen. Men WAIT kräver inte detta.

Koda:

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

Exempel på hur du använder Excel VBA Wait-funktion

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

Exempel nr 1

Antag att du arbetar i ett excel mitt på dagen klockan 14.30 och vill att din kod ska pausas tills klockan blir 14:40:00. Du kan använda koden nedan.

Koda:

 Sub Wait_Example1 () Application.Wait "14:40:00" End Sub 

Koden kommer att stoppa din excel från att fungera tills tiden når 14:40:00 i ditt operativsystem. Att ge tid som detta är farligt eftersom vi inte alltid jobbar från kl. 14.30, det varierar hela tiden.

Låt oss säga att när du kör koden vill du vänta i två minuter, hur hänvisar du den till din kod?

Så vi kan använda VBA NOW-funktionen med TIME VALUE-funktionen för att ange den angivna tiden från den aktuella tiden.

Bara för att påminna dig NOW () -funktionen returnerar aktuellt datum och tid enligt ditt datorsystem. TIMEVALUE-funktionen representerar tiden från 00:00:00 till 23:59:59 dvs 23:59:59 PM i 24-timmarsformat. Det konverterar strängvärdet till ett tidsvärde.

Till exempel betyder NU () + TIDSVÄRDE (00:02:30) aktuell tid + 2 min 30 sek.

Om den aktuella tiden är 14:25:30 blir den 14:28:00.

För att stoppa eller pausa din kod från att köras från aktuell tid till nästa 10 minuter kan du använda koden nedan.

Koda:

 Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub 

Det är viktigt att använda en NOW () -funktion för exakt paus, annars finns det chanser att din excel-arbetsbok har pausats till midnatt. Vi kan dock komma ut ur pausmetoden när som helst genom att trycka på Esc- tangenten eller Break-knappen.

Exempel 2

Vänta i 10 sekunder varje gång Loop Runs

Väntemetoden används väl med öglor. Det finns situationer där du kan behöva vänta i 10 sekunder varje gång loop går. Titta till exempel på nedanstående data.

För att beräkna vinst = (försäljning - kostnad) vill du skapa en loop och efter varje loop vill du vänta i 10 sekunder för att kontrollera om resultatet är korrekt eller inte. Koden nedan gör det.

Koda:

 Sub Wait_Example3 () Dim k As Integer For k = 2 To 9 Cells (k, 4) .Value = Cells (k, 2) - Cells (k, 3) Application.Wait (Now () + TimeValue ("00:00) : 10 ")) Nästa k Avsluta sub 

Denna kod beräknar vinstkolumnen rad för rad. Efter avslutad första rad väntar den i 10 sekunder innan den räknar ut nästa rad.

VBA Sleep vs VBA Wait

VBA SLEEPVBA VÄNTA
Det är inte en VBA-inbyggd funktion, behöver en speciell kod för att komma åt den här funktionen.Det är en VBA-inbyggd funktion, kräver ingen speciell kod för att komma åt den här funktionen.
Sömn kräver millisekunder som tidsram.Vänta kräver en regelbunden tidsram.
Vi kan fördröja koden i millisekunderVi kan bara fördröja hela sekunder.