Eigenschaft zur Aktualisierung des VBA-Bildschirms

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 können wir spüren, dass der Excel-Bildschirm verrückt wird, während das Makro läuft, und das frustriert uns fast. Aber wie gehen wir mit diesen Situationen um und lassen den Code schneller laufen als sonst 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, verlangsamt sich das Excel-Programm 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?

Wenn Sie Zweifel haben, 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?

Sie können diese VBA ScreenUpdating Excel-Vorlage hier herunterladen - VBA ScreenUpdating Excel-Vorlage

Beispiel 1 - Bildschirmaktualisierung ausschalten

Ein Beispiel finden Sie im folgenden Code.

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 

Die obige hat eine verschachtelte VBA-Schleife zum Einfügen von Seriennummern aus der ersten Spalte in die 50. Spalte und kommt wieder zurück und fügt die Seriennummer ab 51 aus der zweiten Zeile in die 50. Spalte ein.

Auf diese Weise wird es eingefügt, bis es die 50. Zeile erreicht.

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 Bildschirmaktualisierungsfunktion unmittelbar nach der Deklaration der Variablen anwenden.

Nachdem Sie die Eigenschaft Screen Updating ausgewählt haben, setzen Sie ein Gleichheitszeichen (=).

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

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

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

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