Excel VBA AI Assistant LogoExcel VBA AI Assistant
    Performance
    VBA
    ScreenUpdating
    Calculation
    Events
    Empfohlen

    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.

    VBA AI Team
    Veröffentlicht am 17. August 2025
    12 Min. Lesezeit

    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.

    Mit dem VBA Assistant schneller ans Ziel

    Lassen Sie sich Best Practices vorschlagen, Code erklären und automatisch verbessern.