So cool es auch aussieht, wenn Ihr VBA-Makro den Bildschirm manipuliert, können Sie Ihrem Makro helfen, schneller zu laufen, wenn Sie ScreenUpdating deaktivieren (deaktivieren).
Bildschirmaktualisierung deaktivieren
1. Um ScreenUpdating zu deaktivieren, fügen Sie am Anfang Ihres Codes diese Zeile ein:
1 | Application.ScreenUpdating = False |
Bildschirmaktualisierung aktivieren
2. Um ScreenUpdating wieder zu aktivieren, fügen Sie am Ende Ihres Codes diese Zeile ein:
1 | Application.ScreenUpdating = True |
Beispiel für die VBA-Bildschirmaktualisierung
Ihr Vorgehen sieht dann wie folgt aus:
1234567891011 | Sub ScreenUpdating_Example()Application.ScreenUpdating = False'Etwas tunRange("a1").Copy Range("b1")Range("a2").Copy Range("b2")Range("a3").Copy Range("b3")Application.ScreenUpdating = TrueEnd Sub |
Bildschirmaktualisierung aktualisieren
Wenn Sie ScreenUpdating deaktivieren, wird Ihr VBA-Code VIEL schneller ausgeführt, aber Ihre Arbeit wird auch professioneller. Endbenutzer möchten in der Regel die Aktionen hinter den Kulissen Ihrer Verfahren nicht sehen (insbesondere, wenn das Verfahren langsam abläuft). Außerdem möchten Sie möglicherweise nicht, dass Endbenutzer die Funktionen hinter den Kulissen sehen (z. B. versteckte Arbeitsblätter). Ich empfehle, ScreenUpdating in praktisch allen Ihren Verfahren zu deaktivieren (und wieder zu aktivieren).
Es kann jedoch vorkommen, dass der Bildschirm aktualisiert werden soll. Um den Bildschirm zu aktualisieren, müssen Sie ScreenUpdating vorübergehend wieder aktivieren (es gibt keinen Befehl zum „Aktualisieren“ des Bildschirms):
123 | Application.ScreenUpdating = True'Etwas tunApplication.ScreenUpdating = False |
VBA-Einstellungen - Beschleunigungscode
Es gibt mehrere andere Einstellungen, mit denen Sie spielen können, um Ihre Codegeschwindigkeit zu verbessern.
Das Deaktivieren der automatischen Berechnungen kann einen RIESIGEN Unterschied in der Geschwindigkeit ausmachen:
1 | Anwendung.Berechnung = xlManual |
Das Deaktivieren der Statusleiste macht auch einen kleinen Unterschied:
1 | Application.DisplayStatusBar = False |
Wenn Ihre Arbeitsmappe Ereignisse enthält, sollten Sie Ereignisse normalerweise zu Beginn Ihres Verfahrens deaktivieren:
1 | Application.EnableEvents = False |
Schließlich kann Ihr VBA-Code verlangsamt werden, wenn Excel versucht, Seitenumbrüche neu zu berechnen (Hinweis: nicht alle Verfahren sind betroffen). Um die Anzeige von Seitenumbrüchen zu deaktivieren, verwenden Sie diese Codezeile:
1 | ActiveSheet.DisplayPageBreaks = False |