VBA-wachtfunctie - Hoe gebruik je Excel VBA Wait Method?

Inhoudsopgave

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 uitvoering van de code stoppen en een tijdje pauzeren, en vervolgens doorgaan met de uitvoering. We kunnen de uitvoering van de code 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 je uiteindelijk kunt zien, staat er Boolean. Dit betekent dat het resultaat wordt geretourneerd als Booleaanse waarden, dwz WAAR of ONWAAR.

Totdat de gespecificeerde tijd arriveerde, staat er FALSE, en het moment gespecificeerde tijd kwam aan, geeft het TRUE 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) 'Voor 64-bits systemen #Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' Voor 32-bits systemen End If

Voorbeelden om Excel VBA-wachtfunctie te gebruiken

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 voorzien is gevaarlijk omdat we niet altijd vanaf 14.30 uur werken. Het blijft de hele tijd variëren.

Laten we zeggen wanneer u de code uitvoert. U wilt 2 minuten wachten, hoe verwijst u dit naar uw code?

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

Om u eraan te herinneren, retourneert de functie NOW () 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 de uitvoering van uw code vanaf de huidige tijd tot de volgende 10 minuten te stoppen of te onderbreken, 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 SLAAP VBA 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 vertragen. We kunnen slechts in hele seconden wachten.

Interessante artikelen...