ScreenUpdating in Excel VBA: Tipps und Tricks
Schritt-für-Schritt-Anleitung
-
Codevorbereitung: Beginne damit, die ScreenUpdating
-Eigenschaft auf False
zu setzen, um Bildschirmflackern zu vermeiden.
Application.ScreenUpdating = False
-
Berechnungen deaktivieren: Deaktiviere die automatische Berechnung, um die Leistung zu verbessern.
Application.Calculation = xlCalculationManual
-
Durchlaufe deine Blätter: Verwende eine Schleife, um durch die Arbeitsblätter zu iterieren.
For Each ws In ThisWorkbook.Worksheets
-
Aktualisiere den Bildschirm: Schalte ScreenUpdating
wieder auf True
, bevor du das finale Arbeitsblatt aktivierst.
Application.ScreenUpdating = True
-
Speichern: Vergiss nicht, deine Änderungen zu speichern.
ActiveWorkbook.Save
Häufige Fehler und Lösungen
-
Problem: Bildschirmflackern trotz ScreenUpdating = False
Lösung: Stelle sicher, dass du Application.ScreenUpdating = True
erst ganz am Ende deines Codes setzt, um das Flackern zu vermeiden.
-
Problem: Application.CutCopyMode = False
zeigt das letzte Blatt an
Lösung: Platziere die Zeile Application.ScreenUpdating = True
nach dem Activate
-Befehl, um das unerwünschte Anzeigen zu vermeiden.
Alternative Methoden
-
Verwende DoEvents
: Manchmal kann das Einfügen von DoEvents
helfen, um sicherzustellen, dass alle Bildschirmaktualisierungen verarbeitet werden.
-
Verzögerung einfügen: Nutze Application.Wait
, um dem System Zeit zu geben, bevor du das nächste Blatt aktivierst.
Application.Wait Now + TimeValue("00:00:01")
Praktische Beispiele
Hier ist ein Beispiel für einen VBA-Code, der ScreenUpdating
korrekt einsetzt:
Sub Beispiel()
Dim ws As Worksheet
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Formular" Then
ws.Cells.Clear
' Hier könnten weitere Operationen folgen
End If
Next ws
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
ActiveWorkbook.Save
End Sub
Tipps für Profis
-
Vermeide unnötige Aktivierungen: Reduziere die Anzahl der Activate
- und Select
-Befehle, um den Code effizienter zu gestalten.
-
Testen in verschiedenen Excel-Versionen: Manchmal können Unterschiede in der Ausführung in verschiedenen Excel-Versionen wie Excel 2007 oder Excel 2010 auftreten. Teste deinen Code in der Zielversion.
-
Verwende Debugging: Nutze den Debugger, um genau zu sehen, wo der Code möglicherweise unerwartete Ergebnisse liefert.
FAQ: Häufige Fragen
1. Was bewirkt Application.ScreenUpdating = False
?
Es verhindert, dass Excel den Bildschirm während der Ausführung eines Makros aktualisiert, was die Ausführungsgeschwindigkeit erhöht und Bildschirmflackern minimiert.
2. Warum wird das letzte Blatt vor der Aktivierung angezeigt?
Das kann passieren, wenn Application.ScreenUpdating
nicht korrekt eingestellt wurde oder wenn Steuerelemente wie Buttons kopiert werden, die nicht durch ScreenUpdating
beeinflusst werden.
3. Wie kann ich sicherstellen, dass mein Code in allen Excel-Versionen funktioniert?
Testen in mehreren Versionen ist der beste Weg, um sicherzustellen, dass dein VBA-Code universell funktioniert. Achte auch darauf, die neuesten Updates für Excel zu verwenden.