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.