VBA-Wartefunktion

Excel VBA-Wartefunktion

VBA Wait ist eine integrierte Funktion, mit der die Ausführung des Codes für einen bestimmten Zeitraum angehalten wird. Sie ist der Funktion in einem Schlafbefehl sehr ähnlich und zum Anhalten eines Codes, den wir mit der application.wait-Methode verwenden.

Einige der Codes müssen einige Zeit vor dem Fortfahren mit der nächsten Codezeile benötigt werden, da andere Aufgaben ausgeführt werden müssen. In diesen Fällen müssen wir den auszuführenden Code stoppen und einige Zeit anhalten, um dann mit der Ausführung fortzufahren. Wir können den auszuführenden Code auf zwei Arten anhalten, wobei die erste die "Sleep" -Methode und die zweite die "Wait" -Methode ist. In unserem früheren Artikel haben wir die Methode "VBA Sleep" zum Anhalten des VBA-Codes erläutert.

"Warten", wie der Name selbst sagt, wird der auszuführende Makrocode in einem bestimmten Zeitraum gespeichert. Mit dieser Methode müssen wir die Zeit angeben, zu der unser Code pausieren soll. Als nächstes sehen wir Beispiele.

Die Syntax der WAIT-Funktion lautet wie folgt.

Wir müssen angeben, wie lange unser Code pausieren soll. Wie Sie am Ende sehen können, heißt es Boolean, dies bedeutet, dass das Ergebnis als Boolean-Werte zurückgegeben wird, dh TRUE oder FALSE.

Bis zur angegebenen Zeit wird FALSE angezeigt und zum angegebenen Zeitpunkt wird TRUE zurückgegeben.

Dies unterscheidet sich von der SLEEP-Funktion, da WAIT eine integrierte Funktion ist, bei der SLEEP eine Windows-Funktion ist. Bevor wir auf die SLEEP-Funktion zugreifen, müssen wir den folgenden Code oben im Modul erwähnen. Aber WAIT erfordert dies nicht.

Code:

# Wenn VBA7, dann Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Für 64-Bit-Systeme # Sonst Public Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As Long)' Für 32-Bit-Systeme End If 

Beispiele für die Verwendung der Excel VBA-Wartefunktion

Sie können diese VBA Wait Excel-Vorlage hier herunterladen - VBA Wait Excel-Vorlage

Beispiel 1

Angenommen, Sie arbeiten an einem Excel-Mittag um 14:30:00 Uhr und möchten, dass Ihr Code angehalten wird, bis die Zeit 14:40:00 Uhr wird. Sie können den folgenden Code verwenden.

Code:

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

Der Code verhindert, dass Ihr Excel funktioniert, bis die Zeit in Ihrem Betriebssystem 14:40:00 Uhr erreicht. Die Bereitstellung einer solchen Zeit ist gefährlich, da wir nicht immer ab 14:30:00 Uhr arbeiten. Sie variiert ständig.

Angenommen, wenn Sie den Code ausführen, auf den Sie 2 Minuten warten möchten, wie verweisen Sie dies in Ihrem Code?

Daher können wir die VBA NOW-Funktion mit der TIME VALUE-Funktion verwenden, um die angegebene Zeit ab der aktuellen Zeit einzugeben.

Nur um Sie daran zu erinnern, dass die Funktion NOW () das aktuelle Datum und die aktuelle Uhrzeit gemäß Ihrem Computersystem zurückgibt. Die TIMEVALUE-Funktion repräsentiert die Zeit von 00:00:00 bis 23:59:59, dh 23:59:59 Uhr im 24-Stunden-Format. Es konvertiert den Zeichenfolgenwert in einen Zeitwert.

Zum Beispiel bedeutet JETZT () + ZEITWERT (00:02:30) Aktuelle Zeit + 2 Min. 30 Sek.

Wenn die aktuelle Zeit 14:25:30 ist, wird es 14:28:00.

Um die Ausführung Ihres Codes von der aktuellen Zeit bis zu den nächsten 10 Minuten zu stoppen oder anzuhalten, können Sie den folgenden Code verwenden.

Code:

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

Es ist wichtig, eine NOW () -Funktion für eine genaue Pause zu verwenden. Andernfalls besteht die Möglichkeit, dass Ihre Excel-Arbeitsmappe bis Mitternacht angehalten wird. Wir können die Pausenmethode jedoch jederzeit durch Drücken der Esc- Taste oder der Break-Taste verlassen.

Beispiel 2

Warten Sie jedes Mal, wenn die Schleife ausgeführt wird, 10 Sekunden

Die Wartemethode wird bei Schleifen gut verwendet. Es gibt Situationen, in denen Sie bei jeder Ausführung der Schleife möglicherweise 10 Sekunden warten müssen. Schauen Sie sich zum Beispiel die folgenden Daten an.

Um Profit = (Sales - Cost) zu berechnen, möchten Sie eine Schleife erstellen und nach jeder Schleife 10 Sekunden warten, um zu überprüfen, ob das Ergebnis korrekt ist oder nicht. Der folgende Code wird das tun.

Code:

 Sub Wait_Example3 () Dim k As Integer Für k = 2 bis 9 Zellen (k, 4) .Value = Cells (k, 2) - Zellen (k, 3) Application.Wait (Now () + TimeValue ("00:00 : 10 ")) Weiter k End Sub 

Dieser Code berechnet den Gewinn zeilenweise. Nach Abschluss der ersten Zeile wird 10 Sekunden gewartet, bevor die nächste Zeile berechnet wird.

VBA Sleep vs VBA Wait

VBA SLEEPVBA WAIT
Es ist keine in VBA integrierte Funktion, benötigt einen speziellen Code, um auf diese Funktion zuzugreifen.Es handelt sich um eine in VBA integrierte Funktion, für deren Zugriff kein spezieller Code erforderlich ist.
Der Schlaf benötigt Millisekunden als Zeitrahmen.Das Warten erfordert einen regelmäßigen Zeitrahmen.
Wir können den Code in Millisekunden verzögernWir können nur in ganzen Sekunden verzögern.