Verzögerung während der Codeausführung mit VBA hinzufügen
-
Beispiel für das Hinzufügen einer Verzögerungszeit in VBA mit dem Befehl
wait
-
Implementieren ein Auto-Upate-Schema mit dem Befehl
wait
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