Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Code beschleunigen

Forumthread: VBA-Code beschleunigen

VBA-Code beschleunigen
10.06.2003 12:48:19
Martin
Hallo,

ich habe ein Makro, das mir in einer FOR .. TO Schleife Bereichsnamen setzt. Dieses sieht wie folgt aus.

Das klappt zwar recht gut, doch leider dauert es sehr lange; bei ca 120 Spalten, rund 40 Sekunden.

Gibt es eine Möglichkeit das zu beschleunigen bitte?

Gruss,
Martin


Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: VBA-Code beschleunigen
10.06.2003 13:23:53
Knut

'Das Ganze ginge schneller, wenn du den Zellbereich in ein
'Array einlesen würdest, statt auf zellen zuzugreifen
'Das kann aber auch schon helfen:
Option Explicit
Sub DeinMakro()
''Am Anfang des Codes:
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
''Dein weiterer Code........
''und am Schluss:
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With

End Sub
'Knut

Anzeige
Re: VBA-Code beschleunigen
10.06.2003 13:46:21
Martin

"auch schon helfen" ist gut Knut. Das funktioniert, als ob xl gar keine Berechnung machen würde. Ich bin erstaunt über den Geschwindigkeitszuwachs.

Vielen Dank für den Tip!

Gruss,
Martin

;
Anzeige

Infobox / Tutorial

VBA-Code effizienter gestalten und beschleunigen


Schritt-für-Schritt-Anleitung

Um deinen VBA-Code zu beschleunigen, kannst du die folgenden Schritte befolgen:

  1. Aktiviere die Optimierungen: Setze am Anfang deines Makros die Anwendungseinstellungen, um die Berechnung und das Bildschirm-Updates zu deaktivieren. Füge diese Zeilen ein:

    With Application
       .ScreenUpdating = False
       .Calculation = xlCalculationManual
       .EnableEvents = False
    End With
  2. Verwende Arrays: Statt direkt auf Zellen zuzugreifen, lade die Werte in ein Array. Das verbessert die Verarbeitungsgeschwindigkeit erheblich.

    Dim myArray As Variant
    myArray = Range("A1:Z120").Value ' Beispiel für Bereich
  3. Verarbeite die Daten im Array: Führe deine Logik auf dem Array durch und schreibe die Ergebnisse zurück in den Arbeitsbereich.

  4. Stelle die Einstellungen wieder her: Am Ende deines Makros solltest du die ursprünglichen Einstellungen wieder aktivieren:

    With Application
       .ScreenUpdating = True
       .Calculation = xlCalculationAutomatic
       .EnableEvents = True
    End With

Häufige Fehler und Lösungen

  • Fehler: Makro läuft weiterhin langsam, obwohl die Einstellungen geändert wurden.

    • Lösung: Überprüfe, ob du wirklich alle Berechnungen und Bildschirmaktualisierungen am Anfang und Ende deines Codes deaktiviert und aktiviert hast.
  • Fehler: Array wird nicht richtig befüllt.

    • Lösung: Achte darauf, dass du den richtigen Bereich in der Range-Funktion angibst. Ein falscher Bereich kann dazu führen, dass das Array leer bleibt.

Alternative Methoden

  • Verwende die Application.Calculation-Eigenschaft: Du kannst den Berechnungsmodus auf xlCalculationManual setzen, um die Berechnungen während des Makros zu verhindern. Dies ist besonders nützlich, wenn du viele Berechnungen anstellst.

  • Nutze DoEvents: In manchen Fällen kann es hilfreich sein, DoEvents in deinem Code zu verwenden, um Excel die Möglichkeit zu geben, andere Aufgaben zu erledigen. Dies kann die Reaktionsfähigkeit erhöhen.


Praktische Beispiele

Hier ist ein einfaches Beispiel für ein Makro, das die obigen Tipps integriert:

Sub SchnellesMakro()
    Dim myArray As Variant
    Dim i As Long

    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
        .EnableEvents = False
    End With

    myArray = Range("A1:A120").Value

    For i = LBound(myArray) To UBound(myArray)
        myArray(i, 1) = myArray(i, 1) * 2 ' Beispielberechnung
    Next i

    Range("A1:A120").Value = myArray

    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
    End With
End Sub

Tipps für Profis

  • Profiling des Codes: Nutze die Debug.Print-Anweisung, um die Ausführungszeit verschiedener Codeabschnitte zu messen und Engpässe zu identifizieren.

  • Vermeide die Verwendung von Select und Activate: Direkter Zugriff auf Zellen oder Bereiche spart Zeit und macht den Code effizienter.


FAQ: Häufige Fragen

1. Wie kann ich die Ausführung meines Excel-Makros weiter beschleunigen?
Neben den oben genannten Methoden kannst du auch sicherstellen, dass dein Code fehlerfrei ist und keine unnötigen Berechnungen oder Schleifen enthält.

2. Funktioniert dieses Vorgehen in allen Excel-Versionen?
Ja, die beschriebenen Methoden sollten in den meisten modernen Excel-Versionen (Excel 2010 und später) funktionieren. Achte jedoch darauf, dass die spezifischen VBA-Befehle in deiner Excel-Version unterstützt werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige