VBA-Bildschirmaktualisierung - Beschleunigen des Code-Ausführungsprozesses

Aktualisierung des Excel VBA-Bildschirms

Die VBA-Bildschirmaktualisierung ist eine Eigenschaft, mit der Ablenkungsblitze beim Ausführen des Codes vermieden oder verhindert und durch Deaktivieren der Bildschirmaktualisierung beschleunigt werden. Wir können die Bildschirmaktualisierung deaktivieren, indem wir diese Eigenschaft auf false setzen.

Oft spüren wir, dass der Excel-Bildschirm verrückt wird, während das Makro ausgeführt wird, und das frustriert uns fast. Aber wie gehen wir mit diesen Situationen um und lassen den Code schneller laufen als sonst üblich langsam?

Die Bildschirmaktualisierung ist etwas, das wir feststellen können, während das Excel-Makro ausgeführt wird. Wenn die Aufgabe ausgeführt wird, können wir feststellen, dass unser Bildschirm die Werte aktualisiert, bis das Makro seine zugewiesene Aufgabe beendet hat. Wenn unser Bildschirm flackert oder aktualisiert wird, führt dies zu einer Verlangsamung des Excel-Programms und die Ausführung der Aufgabe dauert länger als gewöhnlich.

In VBA haben wir eine Eigenschaft namens "ScreenUpdating" und setzen diese Eigenschaft auf FALSE, damit der Prozess der Bildschirmaktualisierung während der Ausführung des Codes entfällt.

In diesem Artikel verabschieden wir uns vom Ansehen des Action-Dramas auf dem Bildschirm, während der Code ausgeführt wird. Heute wird Ihr Code schneller und schneller als sonst ausgeführt.

Wann wird die Bildschirmaktualisierungsfunktion verwendet?

Angenommen, Sie haben Zweifel, wann Sie diese Technik anwenden sollen. Schauen Sie sich die folgenden Punkte an.

  • Wenn Sie eine große Anzahl von Zellen durchlaufen.
  • Senden von E-Mails aus Excel VBA.
  • Wechseln zwischen Excel-Arbeitsmappen.
  • Neue Arbeitsmappen öffnen.

Wie verwende ich die Bildschirmaktualisierungsfunktion in VBA-Code?

Beispiel 1 - Bildschirmaktualisierung ausschalten

Schauen Sie sich zum Beispiel den folgenden Code an.

Code:

Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long MyNumber = 0 Für RowCount = 1 bis 50 Für ColumnCount = 1 bis 50 MyNumber = MyNumber + 1 Zellen (RowCount, ColumnCount). Zellen auswählen (RowCount, ColumnCount) .Value = MyNumber Next ColumnCount Next RowCount End Sub

Das Obige hat eine verschachtelte Schleife VBA Seriennummern von der ersten Spalte bis zum 50 einzufügen th Spalt und wieder zurück kommt und den Einsatz von Seriennummer 51 von der zweiten Reihe zum Start 50 th Spalt.

Wie diese, wird es ein , bis er die 50 erreicht ten Reihe.

Während dieser Code ausgeführt wird, können Sie feststellen, dass Ihr Bildschirm flackert, und Sie können nichts anderes tun, als diesen verrückten Moment zu beobachten.

Um all dies zu vermeiden, können wir die Bildschirmaktualisierung zu FALSE hinzufügen.

Um zuerst auf die Bildschirmaktualisierungsfunktion zuzugreifen, müssen wir auf das Anwendungsobjekt zugreifen.

Wie wir mit dem Application-Objekt sehen können, haben wir viele Eigenschaften und Methoden. Wählen Sie daher Bildschirmaktualisierung aus der IntelliSense-Liste aus.

Hinweis: Sie müssen die Funktion zur Bildschirmaktualisierung unmittelbar nach der Deklaration der Variablen anwenden.

Setzen Sie nach Auswahl der Eigenschaft Bildschirmaktualisierung ein Gleichheitszeichen (=).

Wie wir sehen können, zwei Boolesche Werte, dh FALSE & TRUE.

Um die Bildschirmaktualisierung zu beenden, setzen Sie den Status auf FALSE.

Wenn das Makro zuerst ausgeführt wird, wird der Status der Bildschirmaktualisierung auf FALSE aktualisiert und mit der nächsten Zeile fortgefahren.

Da das Makro die Bildschirmaktualisierung auf FALSE ausgeführt hat, kann der Bildschirm nicht aktualisiert werden, während der Code seine Aufgabe ausführt.

Beispiel # 2 -

Stellen Sie die Bildschirmaktualisierung am Ende immer auf TRUE

Ich habe viele Leute gesehen, die die Bildschirmaktualisierung auf FALSE gesetzt haben, aber vergessen, sie am Ende des Makros wieder auf TRUE zu setzen.

Setzen Sie die Bildschirmaktualisierung am Ende des Makros immer wieder auf TRUE.

Code:

Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long Application.ScreenUpdating = False MyNumber = 0 Für RowCount = 1 bis 50 Für ColumnCount = 1 bis 50 MyNumber = MyNumber + 1 Zellen (RowCount, ColumnCount). Zellen auswählen (RowCount, ColumnCount) .Value = MyNumber Next ColumnCount Nächste RowCount-Anwendung.ScreenUpdating = True End Sub

Interessante Beiträge...