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.
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.