Excel-Optimierung: Beschleunigung mit ScreenUpdating und Calculation
Schritt-für-Schritt-Anleitung
Um die Performance deiner Excel VBA-Makros zu verbessern, kannst du die zwei wichtigen Eigenschaften Application.ScreenUpdating und Application.Calculation anpassen. Hier sind die Schritte, um dies effektiv zu tun:
-
Deaktiviere die Bildschirmaktualisierung:
Application.ScreenUpdating = False
-
Setze die Berechnung auf manuell:
Application.Calculation = xlCalculationManual
-
Führe deine Berechnungen oder Schleifen durch. Zum Beispiel:
For Each c In Tabelle1.Range("tg1_Abbild")
c.Formula = Tabelle2.Cells(c.Row, c.Column).Formula
Next
-
Reaktiviere die Bildschirmaktualisierung und setze die Berechnung zurück:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Diese Vorgehensweise hilft, die Ausführung von langen Prozeduren in Excel zu beschleunigen.
Häufige Fehler und Lösungen
-
Problem: Makros laufen langsamer, wenn Application.ScreenUpdating und Application.Calculation aktiviert sind.
- Lösung: Überprüfe, ob du diese Einstellungen nur in langen Prozeduren verwendest. Bei kurzen Makros kann es schneller sein, sie nicht zu deaktivieren.
-
Problem: Sanduhr wird weiterhin angezeigt, obwohl Application.ScreenUpdating = False gesetzt ist.
- Lösung: Stelle sicher, dass du alle relevanten Einstellungen in einem
With Application Block verwendest und prüfe, ob andere Prozesse die Bildschirmaktualisierung beeinflussen.
Alternative Methoden
-
Direkte Berechnungen: Statt For Each Schleifen zu verwenden, kannst du auch direkt Berechnungen auf Zellbereichen anwenden. Das kann die Ausführungsgeschwindigkeit erheblich steigern.
-
Verwendung von Arrays: Lade Daten in ein Array, bearbeite sie und schreibe sie dann zurück in Excel. Dies vermeidet ständige Interaktionen mit dem Excel-Blatt, was die Performance verbessert.
Praktische Beispiele
Hier sind einige Beispiele, wie du die Einstellungen in deinen Makros verwenden kannst:
-
Beispiel für das Deaktivieren von ScreenUpdating:
Sub BeispielMakro()
Application.ScreenUpdating = False
' Deine Berechnungen hier
Application.ScreenUpdating = True
End Sub
-
Beispiel für manuelle Berechnung:
Sub BerechnungOptimieren()
Application.Calculation = xlCalculationManual
' Berechnungen hier
Application.Calculation = xlCalculationAutomatic
End Sub
Diese Beispiele zeigen, wie du mit Application.Calculation und Application.ScreenUpdating die Ausführung deiner Makros optimieren kannst.
Tipps für Profis
-
Einstellungen speichern: Bevor du Application.ScreenUpdating oder Application.Calculation änderst, speichere die aktuellen Einstellungen. Dies hilft, sie nach der Ausführung wiederherzustellen.
Dim AppCalc As XlCalculation
Dim AppScreen As Boolean
AppCalc = Application.Calculation
AppScreen = Application.ScreenUpdating
-
Vermeide unnötige Aktualisierungen: Wenn du viele Daten in einer Schleife bearbeitest, versuche, die Bildschirmaktualisierung und Berechnung nur einmal am Anfang und Ende zu setzen.
FAQ: Häufige Fragen
1. Warum wird die Ausführung meiner kurzen Makros langsamer?
Die Deaktivierung von Application.ScreenUpdating und Application.Calculation kann in kurzen Makros mehr Zeit kosten, weil die overhead-Kosten für das Aktivieren und Deaktivieren überwiegen.
2. Was bedeutet Application.ScreenUpdating = False?
Es bedeutet, dass Excel während der Ausführung eines Makros den Bildschirm nicht aktualisiert, was die Ausführungsgeschwindigkeit erhöht.
3. Wie kann ich die Bildschirmaktualisierung wirklich deaktivieren?
Stelle sicher, dass alle relevanten Einstellungen in einem With Application Block erfolgt sind und überprüfe, ob andere Prozesse die Bildschirmaktualisierung beeinflussen.
Mit diesen Vorgehensweisen und Tipps kannst du die Geschwindigkeit deiner Excel VBA-Anwendungen erheblich steigern und das Nutzererlebnis verbessern.