VBA-Codierungsmuster: Verbesserung der VBA-Leistung

In diesem Artikel sehen wir uns an, wie Sie die VBA-Leistung verbessern können.

Im vorherigen Artikel haben wir die VBA-Range-Loop-Methode verglichen und bestätigt, dass die Methode mit Variant Array die schnellste ist.

VBA-Codierungsmuster: Bereichsschleife - Lesen


1. Leistungsbezogene globale VBA-Variablen

Hier ist eine Zusammenfassung aller Variablen.

성능 관련 VBA 전역 변수
Leistungsbezogene globale VBA-Variablen

Untersuchen Sie den Inhalt jeder Variablen.

1.1. Anwendung Bildschirmaktualisierung

Es ist eine Variable, die steuert, ob der Bildschirm aktualisiert wird oder nicht, und der Standardwert ist True (Bildschirm wird aktualisiert).

  • Leistungsverbesserung durch Einstellung, den Bildschirm während der VBA-Codeausführung nicht zu aktualisieren (Dateikonvertierung, Blattkonvertierung, Zellwerteinstellung usw.).
  • Effektiv bei vielen Bildschirmaktualisierungen
  • Setzen Sie es bei der Eingabe des Codes auf False und am Ende des Codes wieder auf True.

1.2. Anwendung.DisplayAlerts

Eine Variable, die steuert, ob das Warnfenster angezeigt wird oder nicht, und der Standardwert ist True (Warnfenster wird angezeigt).

  • Verhindert, dass der Code mittendrin anhält, indem keine Warnfenster angezeigt werden (z. B. das Fenster „Möchten Sie speichern“, wenn Sie versuchen, eine von Ihnen geänderte Datei zu schließen) während der Ausführung des VBA-Codes
  • Setzen Sie es bei der Eingabe des Codes auf False und am Ende des Codes wieder auf True.

1.3. Anwendung Berechnung

Dies ist eine Variable, die die Formelberechnungsmethode steuert, und der Standardwert ist xlCalculationAutomatic (automatische Berechnung).

  • Automatische Berechnung von Formeln (COUNTIF, SVERWEIS usw.) während der Ausführung von VBA-Code verhindern
  • Wirksam für viele Formeln
  • Setzen Sie es bei der Eingabe des Codes auf xlCalculationManual und am Ende des Codes wieder auf xlCalculationAutomatic

1.4. Anwendung EnableEvents

Es ist eine Variable, die steuert, ob Ereignisse verarbeitet werden, und der Standardwert ist True (Ereignisse werden verarbeitet).

  • Ausführung von Code verhindern, der Ereignisse wie Worksheet_Change behandelt, wenn sie auftreten
  • Dies ist effektiv, wenn Sie über Code verfügen, der Ereignisse verarbeitet.
  • Setzen Sie es bei der Eingabe des Codes auf False und am Ende des Codes wieder auf True.

2. Beispielcode

2.1. Wann ist eine Bewerbung sinnvoll

Wenn der VBA-Code die folgenden Fälle enthält, ist es angebracht, die in diesem Artikel beschriebene Methode zur Leistungsverbesserung anzuwenden.

  • Beim Erstellen einer neuen Datei/eines neuen Blattes
  • Beim Wechseln des aktuellen Blattes zu einem anderen Blatt
  • Im Falle einer kontinuierlichen Änderung der aktuell ausgewählten Zelle innerhalb eines Blattes
  • Bei der Durchführung komplexer Berechnungen, z. B. langer Berechnungen mit vielen Formeln

In diesem Fall wird die Ausführung des VBA-Codes vorübergehend ausgesetzt und Ereignisse, die Excel erfordern, wie z. B. das Aktualisieren des Bildschirms oder das Berechnen von Formeln, werden verarbeitet. Das typischste Beispiel für langsamen VBA-Code ist die Bildschirmaktualisierung. Sie können die Leistung verbessern, indem Sie andere Ereignisverarbeitungen vorübergehend aussetzen, während der VBA-Code ausgeführt wird, und andere Ereignisse verarbeiten, nachdem die Ausführung des VBA-Codes abgeschlossen ist.

2.2. Beispielcode

Vor der Eingabe des zu verarbeitenden Codes wird die globale Variable auf einen Leistungsverbesserungswert gesetzt, und nachdem der Verarbeitungscode beendet ist, wird sie auf den ursprünglichen Wert geändert. Bitte beachten Sie den folgenden Code.

'코드 진입 부분
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Application.DisplayAlerts = False
 
'실행할 코드가 들어 갈 부분
...
 
'코드 종료 부분
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.DisplayAlerts = True

Oben haben wir uns VBA-Codierungsmuster zur Leistungsverbesserung angesehen. Wenn Sie Fragen haben, hinterlassen Sie bitte einen Kommentar.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEDeutsch