VBA-pauze

Pauzeer dat VBA-code wordt uitgevoerd

VBA-pauze wordt gebruikt om de uitvoering van de code voor een bepaalde tijd te pauzeren en om een ​​code in VBA te pauzeren, gebruiken we de methode application.wait.

Wanneer we grote VBA-projecten bouwen nadat we iets hebben uitgevoerd, moeten we mogelijk enige tijd wachten om andere taken uit te voeren. Hoe pauzeren we in dergelijke scenario's de macrocode om onze taak uit te voeren? We kunnen de VBA-code voor een bepaalde periode pauzeren door twee functies te gebruiken en die functies zijn "Wachten" en "Slaapstand".

Hoe code te pauzeren met de wachtmethode?

"Wait" is de functie die we in VBA gebruiken om de macro een bepaalde tijd te laten draaien. Door deze functie toe te passen, moeten we aangeven tot hoe laat onze code moet wachten.

U kunt deze VBA Pause Excel-sjabloon hier downloaden - VBA Pause Excel-sjabloon

Als u de code bijvoorbeeld om 13:00:00 uitvoert en u de tijd invoert als "13:15:00", wordt de macro gedurende 15 minuten actief gehouden.

Kijk nu naar het argument van de WAIT-functie in VBA.

In het tijdargument moeten we vermelden op welk tijdstip onze code moet pauzeren of wachten.

Kijk bijvoorbeeld naar de onderstaande VBA-code.

Code:

 Sub Pause_Example1 () Bereik ("A1"). Value = "Hallo" Bereik ("A2"). Value = "Welkom" Application.Wait ("13:15:00") Bereik ("A3"). Waarde = " Naar VBA "End Sub 

Onthoud dat tijdens het uitvoeren van deze code mijn systeemtijd 13:00:00 is, zodra ik de code uitvoer, worden de eerste twee regels uitgevoerd, dwz

Bereik ("A1"). Waarde = "Hallo" & Bereik ("A2"). Waarde = "Welkom"

Maar als je naar de volgende regel kijkt, staat Application.Wait ("13:15:00"), dus na het uitvoeren van die lijntaken zal mijn macro gedurende 15 minuten worden gepauzeerd, dwz vanaf 13:00:00 zal het wachten tot mijn systeem tijd bereikt 13:15:01.

Zodra mijn systeemtijd die tijd bereikt, worden de resterende regels code uitgevoerd.

Bereik ("A3"). Waarde = "Naar VBA"

Dit is echter niet de beste manier om de pauzecode te oefenen, laten we zeggen dat u de code op verschillende tijdstippen uitvoert, dan moeten we de NU VBA-functie gebruiken met de TIJDWAARDE-functie.

De functie Now retourneert de huidige datum en tijd volgens het systeem waaraan we werken.

TIME Value- functie houdt de tijd vast van 00:00:00 tot 23:59:29.

Oké, neem aan dat we de code 10 minuten moeten pauzeren wanneer we de code uitvoeren, dan kunnen we de onderstaande code gebruiken.

Code:

 Sub Pause_Example1 () Bereik ("A1"). Value = "Hallo" Bereik ("A2"). Waarde = "Welkom" Application.Wait (Now () + TimeValue ("00:00:10")) Bereik (" A3 "). Value =" Naar VBA "End Sub 

Dit is vergelijkbaar met de vorige code, maar het enige verschil is dat we de functie NU & TIJDWAARDE hebben toegevoegd.

Elke keer dat we deze code uitvoeren, wordt de uitvoering 10 minuten vastgehouden of onderbroken.

Hoe de VBA-code pauzeren met de slaapmethode?

Slaap is een gecompliceerde functie in VBA omdat het geen ingebouwde functie is. Omdat het niet ingebouwd is om het beschikbaar te maken voor gebruik, moeten we de onderstaande code bovenaan onze module toevoegen.

Code:

# If VBA7 Then Public Declare 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 

U hoeft alleen maar de bovenstaande code te kopiëren en deze bovenaan de module te plakken.

De reden waarom we de bovenstaande code moeten toevoegen, omdat SLEEP een VBA-functie is die wordt gepresenteerd in Windows DLL-bestanden, dus we moeten de nomenclatuur declareren voordat we de subprocedure starten.

Oké, laten we nu eens kijken naar het voorbeeld van de SLEEP-functie.

Code:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Tijd MsgBox StartTime Sleep (10000) EndTime = Tijd MsgBox EndTime End Sub 

Ten eerste hebben we twee variabelen gedeclareerd als String.

 Dim StartTime As String Dim EndTime As String 

Vervolgens hebben we de TIME excel-functie toegewezen aan de StartTime-variabele. De functie TIME retourneert de huidige tijd volgens het systeem.

StartTime = Tijd

Dan hebben we hetzelfde toegewezen om te laten zien in het berichtvenster.

MsgBox StartTime

Vervolgens heb ik de SLEEP-functie toegepast als Sleep (10000).

Hier is 10000 milliseconden, wat gelijk is aan 10 seconden in VBA.

Dan heb ik eindelijk de nog een TIME-functie toegewezen aan de variabele EndTime .

Nu heb ik weer een code geschreven om de tijd te laten zien.

EndTime = Tijd

Dit toont het verschil tussen starttijd en eindtijd.

Nu zal ik de code uitvoeren en kijken wat de starttijd is.

Wanneer ik de code uitvoer, is mijn systeemtijd 13:40:48 en nu slaapt mijn code 10 seconden. Aan het einde is mijn tijd als volgt.

Op deze manier kunnen we de uitvoering van de code voor een bepaalde tijd onderbreken.