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.