Kann ich eine Pause in das Makro vor dem neu berechnen einbauen, so dass die Daten erneuert sind und erst dann neu berechnet wird?
schau Dir in der VBA-Hilfe mal Wait an.
Gruß
Peter
Application.Wait Now + TimeValue("00:00:01")
Gruß; Georg
mach das bitte über DoEvents, mit Wait widersprichst den Prinzipien der Windows-Programmierung.
Gruß
Micha
Andreas
Um eine Pause in dein Excel VBA Makro einzufügen, kannst du die Methode Application.Wait
oder DoEvents
verwenden. Hier sind die Schritte für beide Methoden:
Application.Wait verwenden:
Füge den folgenden Code in dein Makro ein:
Sub Auto_Open()
' Daten abrufen
' ...
' Pause von 1 Sekunde einfügen
Application.Wait Now + TimeValue("00:00:01")
' Neu berechnen
Application.Calculate
End Sub
DoEvents verwenden:
DoEvents
zu verwenden, um sicherzustellen, dass das System die aktuellen Aufgaben abschließen kann.Beispiel:
Sub Auto_Open()
' Daten abrufen
' ...
' Pause einfügen
For i = 1 To 1000000
DoEvents
Next i
' Neu berechnen
Application.Calculate
End Sub
Fehler: Das Makro wird zu schnell ausgeführt und die Daten werden nicht rechtzeitig aktualisiert.
Application.Wait
, um eine gezielte Pause einzubauen. Achte darauf, dass die angegebene Zeit ausreichend ist, um die externen Daten abzurufen.Fehler: Bei Verwendung von Wait
stürzt Excel ab oder reagiert nicht mehr.
DoEvents
zu verwenden, da dies die Programmierung unter Windows nicht stört.Neben den bereits genannten Methoden gibt es noch andere Ansätze, um eine Pause in VBA einzufügen:
Schleifen mit Sleep
: Wenn du eine präzisere Steuerung benötigst, kannst du die Windows-API Sleep
nutzen, um die Ausführung für eine bestimmte Millisekunde zu pausieren.
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Auto_Open()
' Daten abrufen
' ...
' Pause von 1000 Millisekunden (1 Sekunde)
Sleep 1000
' Neu berechnen
Application.Calculate
End Sub
Hier sind einige praktische Beispiele für die Verwendung von Pausen in Excel VBA:
Pause zwischen mehreren Datenabrufen:
Sub DatenAbrufen()
' Erster Datenabruf
' ...
Application.Wait Now + TimeValue("00:00:02") ' 2 Sekunden Pause
' Zweiter Datenabruf
' ...
Application.Calculate
End Sub
Benutzerinteraktion während der Pause:
Sub BenutzerPause()
Dim i As Long
For i = 1 To 10
DoEvents ' Benutzer kann während der Schleife interagieren
Application.Wait Now + TimeValue("00:00:01") ' 1 Sekunde Pause
Next i
End Sub
DoEvents
anstelle von Wait
, wenn du möchtest, dass dein Makro weiterhin auf Benutzerinteraktionen reagiert.1. Wie lange kann ich eine Pause in VBA einstellen?
Du kannst die Pause auf jede beliebige Zeit einstellen, aber achte darauf, dass sehr lange Pausen die Benutzererfahrung negativ beeinflussen könnten.
2. Was passiert, wenn ich Application.Wait
für zu lange einstelle?
Excel wird während dieser Zeit nicht reagieren, was zu einem unbefriedigenden Nutzererlebnis führen kann. Es ist ratsam, kürzere Pausen zu verwenden und DoEvents
für Benutzerinteraktion einzusetzen.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen