VBA-wachtfunctie

Excel VBA-wachtfunctie

VBA Wait is een ingebouwde functie die wordt gebruikt om de uitvoering van de code voor een bepaalde tijd te pauzeren, het lijkt sterk op wat we doen in een slaapopdracht en om een ​​code te pauzeren gebruiken we de methode application.wait.

Sommige codes hebben enige tijd nodig voordat ze doorgaan naar de volgende regel code, omdat andere taken moeten worden voltooid. In deze gevallen moeten we de uit te voeren code stoppen en een tijdje pauzeren en vervolgens doorgaan met de uitvoering. We kunnen de code die moet worden uitgevoerd op twee manieren pauzeren, de eerste is de "Sleep" -methode en de tweede is de "Wait" -methode. In ons eerdere artikel hebben we de "VBA Sleep" -methode besproken om de VBA-code te pauzeren.

"Wacht" zoals de naam zelf zegt, het zal de macrocode bevatten die moet worden uitgevoerd binnen een gespecificeerd tijdsbestek. Met behulp van deze methode moeten we de tijd specificeren dat onze code moet pauzeren, we zullen hierna voorbeelden zien.

De syntaxis van de WAIT-functie is als volgt.

We moeten vermelden hoe lang onze code moet pauzeren. Zoals u aan het einde kunt zien, staat er Boolean, dit betekent dat het resultaat wordt geretourneerd als Booleaanse waarden, dwz TRUE of FALSE.

Totdat de opgegeven tijd arriveerde, staat er ONWAAR en op het moment dat de opgegeven tijd arriveerde, geeft het WAAR terug.

Dit is in tegenstelling tot de SLEEP-functie omdat WAIT een ingebouwde functie is, terwijl SLEEP een Windows-functie is. Voordat we toegang krijgen tot de SLEEP-functie, moeten we de onderstaande code bovenaan de module vermelden. Maar WAIT heeft dit niet nodig.

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)' For 32 Bit Systems End If 

Voorbeelden om Excel VBA-wachtfunctie te gebruiken

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

Voorbeeld 1

Stel dat u halverwege de dag om 14.30 uur in een Excel werkt en u wilt dat uw code wordt gepauzeerd totdat de tijd 14:40.00 wordt. U kunt de onderstaande code gebruiken.

Code:

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

De code zorgt ervoor dat uw Excel niet werkt totdat de tijd 14:40:00 bereikt in uw besturingssysteem. Zulke tijd verstrekken is gevaarlijk omdat we niet altijd vanaf 14.30 uur werken, het blijft de hele tijd variëren.

Laten we zeggen dat wanneer u de code uitvoert, u 2 minuten wilt wachten, hoe kunt u dit in uw code verwijzen?

We kunnen dus de VBA NOW-functie gebruiken met de TIJD WAARDE-functie om de opgegeven tijd vanaf de huidige tijd in te voeren.

Gewoon om u eraan te herinneren NOW () -functie retourneert de huidige datum en tijd volgens uw computersysteem. De functie TIJDWAARDE vertegenwoordigt de tijd van 00:00:00 tot 23:59:59, dwz 23:59:59 PM in 24-uursnotatie. Het converteert de tekenreekswaarde naar een tijdwaarde.

Bijvoorbeeld NU () + TIJDWAARDE (00:02:30) betekent huidige tijd + 2 min 30 sec.

Als de huidige tijd 14:25:30 is, wordt het 14:28:00.

Om te stoppen of te pauzeren dat uw code wordt uitgevoerd vanaf de huidige tijd tot de volgende 10 minuten, kunt u de onderstaande code gebruiken.

Code:

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

Het is belangrijk om een ​​NOW () -functie te gebruiken voor een nauwkeurige pauze, anders bestaat de kans dat uw Excel-werkmap tot middernacht is gepauzeerd. We kunnen echter op elk moment uit de pauzemethode komen door op de Esc- toets of de Break-toets te drukken .

Voorbeeld # 2

Wacht 10 seconden elke keer dat de lus wordt uitgevoerd

De wachtmethode wordt goed gebruikt met lussen. Er zijn situaties waarin u mogelijk 10 seconden moet wachten elke keer dat de lus wordt uitgevoerd. Bekijk bijvoorbeeld de onderstaande gegevens.

Om Winst = (Verkoop - Kosten) te berekenen, wil je een lus maken en na elke lus wil je 10 seconden wachten om te controleren of het resultaat juist is of niet. De onderstaande code zal dat doen.

Code:

 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 ")) Volgende k End Sub 

Deze code berekent de winstkolom regel voor regel. Na het voltooien van de eerste regel, wacht het 10 seconden voordat het de volgende regel berekent.

VBA Sleep vs VBA Wacht

VBA SLAAPVBA WACHT
Het is geen ingebouwde VBA-functie, heeft een speciale code nodig om toegang te krijgen tot deze functie.Het is een ingebouwde VBA-functie, vereist geen speciale code om toegang te krijgen tot deze functie.
Slaap vereist milliseconden als het tijdsbestek.Wachten vereist een regelmatig tijdsbestek.
We kunnen de code in milliseconden vertragenWe kunnen slechts in hele seconden wachten.