ScreenUpdating, Calculation & Events: So beschleunigen Sie Ihre Makros um Faktor 10
Die drei wichtigsten Performanceschalter in Excel: ScreenUpdating, Calculation und Events sicher steuern – mit Wrapper-Muster und Praxisfall.
Excel rechnet und zeichnet sehr fleißig – manchmal zu fleißig. Wer ScreenUpdating, Calculation und Events kontrolliert, eliminiert unnötige Arbeit und beschleunigt Makros drastisch. Inklusive sicherem Wrapper-Muster und Praxisfall.
1) Die drei Schalter – was sie tun
- ScreenUpdating: Bildschirm neu zeichnen (UI-Flicker vermeiden).
- Calculation: Formeln neu berechnen (manuell für Batch-Verarbeitung).
- EnableEvents: Ereignisse wie
Worksheet_Change(Kaskaden stoppen).
2) Sicheres Wrapper-Muster
Sub WithEngineGuard(ByVal actionName As String) Dim oldCalc As XlCalculation: oldCalc = Application.Calculation Dim oldScr As Boolean: oldScr = Application.ScreenUpdating Dim oldEvt As Boolean: oldEvt = Application.EnableEvents On Error GoTo Ende Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False ' ... Arbeit ... Debug.Print actionName, "done" Ende: Application.EnableEvents = oldEvt Application.Calculation = oldCalc Application.ScreenUpdating = oldScr End Sub
3) Praxisfall – Formatieren & Summieren großer Bereiche
Vorher: Jede Formatänderung triggert Neuzeichnung/Berechnung → mehrere Minuten.
Nachher: Mit Wrapper nur Sekunden.
Sub FormatAndSum() Dim oldCalc As XlCalculation: oldCalc = Application.Calculation Dim oldScr As Boolean: oldScr = Application.ScreenUpdating Dim oldEvt As Boolean: oldEvt = Application.EnableEvents On Error GoTo Ende Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False With Range("A2:D100000") .NumberFormat = "#,##0.00" .Columns(4).FormulaR1C1 = "=SUM(R2C4:R[-1]C4)" End With Ende: Application.EnableEvents = oldEvt Application.Calculation = oldCalc Application.ScreenUpdating = oldScr End Sub
Effekt: Faktor >10 Beschleunigung, kein UI-Flicker.
4) Do's & Don'ts
- ✅ Zustände immer sichern & wiederherstellen (auch bei Fehlern).
- ✅ Nur so lange wie nötig deaktivieren.
- ❌ Nicht in Event-Prozeduren deaktivieren, ohne Reentrancy zu beachten.
- ❌ Nie vergessen, am Ende zurückzustellen.
Fazit
Wer die Engine-Schalter beherrscht, holt sofort zweistellige Performancegewinne – sicher und reproduzierbar.
Code-Generierung
Automatische VBA-Code-Erstellung durch natürliche Sprache
Code-Analyse
Code verstehen und dokumentieren
Debugging
Intelligente Fehlerfindung und -behebung
Code-Verbesserung
Optimierung und Fehlerbehandlung
UI-Design
UserForms über natürliche Sprache erzeugen
Snippet-Verwaltung
Über 100 vorgefertigte Code-Bausteine
Mit dem VBA Assistant schneller ans Ziel
Lassen Sie sich Best Practices vorschlagen, Code erklären und automatisch verbessern.
