Verzögerung während der Codeausführung mit VBA hinzufügen

Glen Alfaro 30 Januar 2023
  1. Beispiel für das Hinzufügen einer Verzögerungszeit in VBA mit dem Befehl wait
  2. Implementieren ein Auto-Upate-Schema mit dem Befehl wait
Verzögerung während der Codeausführung mit VBA hinzufügen

Beim Umgang mit komplexen Berechnungen und Prozessen mit VBA sollte der Programmierer bedenken, dass einige Algorithmen zu schwer sind, als dass sie einige Zeit für die Verarbeitung benötigen. Das Problem tritt auf, wenn der aktuelle Prozess noch ausgeführt wird, der VBA-Compiler dann aber mit dem nächsten Prozess fortfährt. In diesem Fall würden Überläufe und Fehler auftreten.

Eine typische Anwendung der Verzögerung ist der Umgang mit Web-Scraping-Tools. Die Website sollte zuerst vollständig geladen werden, bevor Daten gescrapt werden. Andernfalls tritt ein Fehler auf. Eine weitere Anwendung davon ist, wenn wir ein Makro regelmäßig für einen definierten Zeitraum ausführen müssen.

Dieser Artikel zeigt, wie man mit dem Befehl wait eine Verzögerungszeit hinzufügt.

Syntax:

Application.Wait(Now + [delay time])

Wo:

[delay time] Gibt die benötigte Verzögerungszeit an.

Beispiel für das Hinzufügen einer Verzögerungszeit in VBA mit dem Befehl wait

Sub DelayMe()
'Print the current time
Debug.Print Now

'Delay for 10 seconds start here
Application.Wait(Now + TimeValue("00:00:10"))

'Print the current time
Debug.Print Now

End Sub

Ausgabe:

12/21/2021 4:41:25 PM 
12/21/2021 4:41:35 PM 

Implementieren ein Auto-Upate-Schema mit dem Befehl wait

Der folgende Codeblock demonstriert die Implementierung von Auto-Update-Schemata mit dem Befehl wait. Es ruft alle 10 Sekunden die Unterroutine GetTimeNow auf.

Sub AutoUpdate()

'Main loop where the code execution takes place 
Do

'Add a delay for every call
Application.Wait(Now + TimeValue("00:00:10"))
'Calls the GetTimeNow subroutine
Call GetTimeNow
Loop

End Sub

Sub GetTimeNow

'Print the time at the time of the call.
Debug.Print "The current time is: " & Now

End Sub

Ausgabe:

The current time is: 12/21/2021 4:59:30 PM
The current time is: 12/21/2021 4:59:48 PM
The current time is: 12/21/2021 5:00:01 PM
The current time is: 12/21/2021 5:00:16 PM