VBA-Wait & Sleep-Funktionen - VBA-Code anhalten / verzögern

In diesem Tutorial wird gezeigt, wie Sie Code mit den Wait- und Sleep-Funktionen in VBA anhalten / verzögern.

Wenn wir große VBA-Programme erstellen, die viele Berechnungen durchführen oder vielleicht sogar ein externes Programm zur Ausführung aufrufen, kann es sein, dass unser VBA-Code für eine bestimmte Zeit angehalten wird, während der externe Prozess ausgeführt wird. Um dies zu erreichen, stehen VBA einige Methoden zur Verfügung.

Verwendung der Application.Wait-Methode

Wenn wir die Ausführung unseres Makros für einige Zeit anhalten müssen oder bis eine bestimmte Zeit erreicht ist, bevor wir den nächsten Schritt ausführen, können wir die Anwendung.Warten Methode. Dies kann beispielsweise nützlich sein, wenn wir einen Login-Prozess auf einer Website automatisiert haben und einige Sekunden warten müssen, bis die Seite geladen ist, bevor unser Makro weiter ausgeführt wird.

1 Sekunde warten

Wenn Sie diese Zeile unten in Ihr Makro einfügen, wird die Ausführung für ungefähr 1 Sekunde angehalten:

1 Application.Wait (Jetzt + TimeValue("0:00:01"))

Warte bis

In einigen Fällen müssen Sie bis zu einem bestimmten Zeitpunkt warten. Mit dieser Zeile darunter wird Ihr Makro nicht vor 9:00 Uhr fortgesetzt:

1 Anwendung.Warten Sie "09:00:00"

Bitte beachten Sie, dass die Anwendung.Warten akzeptiert keine Verzögerungen von weniger als 1 Sekunde.

VBA-Programmierung | Code Generator arbeitet für Sie!

Verwendung der Schlafmethode

Wenn Sie Ihr Makro genauer pausieren möchten, können Sie die Sleep-Methode verwenden.

Sleep ist eine Windows-API-Funktion, das heißt, sie ist nicht Teil von VBA. Auf sie kann mit einer speziellen Deklarationsanweisung zugegriffen werden.

Wenn Sie die 64-Bit-Version von Microsoft Office verwenden, können Sie die folgende Anweisung in ein neues Modul einfügen oder am Anfang des Moduls (nicht direkt im Unterprogramm), in dem Sie die Sleep-Funktion verwenden möchten:

1 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Millisekunden als LongPtr)

Verwenden Sie bei der 32-Bit-Version diese Zeile:

1 Public Declare Sub Sleep Lib "kernel32" (ByVal Millisekunden als LongPtr)

Nachdem Sie die Sleep-Funktion deklariert haben, haben Sie in Ihren Unterprogrammen wie folgt darauf Zugriff:

1 Schlaf 10000

Mit dieser Zeile darüber wird Ihr Makro für 10.000 Millisekunden, also 10 Sekunden, angehalten.

Verwenden einer Schleife mit Do-Ereignissen

Der große Nachteil bei der Verwendung der Wait- und Sleep-Methoden besteht darin, dass der Benutzer in Excel nichts tun kann, während er auf die Fortsetzung des Makros wartet. Ein Benutzer könnte denken, dass Excel nicht mehr reagiert und der Benutzer dann verwenden kann Strg+Pause um das Makro zu unterbrechen, verfehlt dies den Zweck, das Makro zu Beginn anzuhalten.

Um dieses Problem zu lösen, können wir eine Schleife mit einer Methode namens DoEvents verwenden.

1234567 Öffentlicher Teiltest()Dim ich so langFür i = 1 bis 20000Bereich("A1").Wert = iDoEventsAls nächstesEnd Sub

Während Excel das obige Makro ausführt, kann der Benutzer nun weiterhin mit Excel interagieren - wir können beispielsweise Registerkarten ändern oder Zellen formatieren - im Grunde wird das Makro weiter ausgeführt, aber der Excel-Bildschirm wird nicht eingefroren. Wir könnten eine ähnliche Schleife verwenden, um eine Timer-Funktion in Excel zu erstellen und die DoEvents Methode darin, den Bildschirm aufzutauen, während der Timer läuft.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave