Excel 2016 VBA-Geschwindigkeitstipps

VBA für Excel 2016 ist schnell, aber nicht immer schnell genug. (Computerprogramme sind nie schnell genug.) Lesen Sie weiter, um einige Programmierbeispiele zu entdecken, mit denen Sie Ihre Makros beschleunigen können.

Bildschirmaktualisierung deaktivieren

Wenn Sie ein Makro ausführen, können Sie sich zurücklehnen und alle Bildschirmaktionen beobachten, die im Makro auftreten. Dies kann zwar aufschlussreich sein, aber nachdem Sie das Makro richtig zum Laufen gebracht haben, ist es oft ärgerlich und kann die Leistung Ihres Makros erheblich verlangsamen. Glücklicherweise können Sie die Bildschirmaktualisierung deaktivieren, die normalerweise beim Ausführen eines Makros auftritt. Verwenden Sie die folgende Anweisung, um die Bildschirmaktualisierung zu deaktivieren:

Application.ScreenUpdating = False

Wenn Sie möchten, dass der Benutzer zu einem beliebigen Zeitpunkt während des Makros sieht, was passiert, verwenden Sie die folgende Anweisung, um die Bildschirmaktualisierung wieder zu aktivieren:

Application.ScreenUpdating = True

Um den Geschwindigkeitsunterschied zu demonstrieren, führen Sie dieses einfache Makro aus, das einen Bereich mit Zahlen füllt:

Sub FillRange()
  Dim r als lang, c als lang
  Dimmen Sie die Zahl als lang
  Zahl = 0
  Für r = 1 bis 50
    Für c = 1 bis 50
      Zahl = Zahl + 1
      Zellen(r, c).Wählen
      Zellen(r, c).Wert = Zahl
    Nächstes c
  Nächster r
End Sub

Sie sehen, dass jede Zelle ausgewählt und der Wert in die Zellen eingegeben wird. Fügen Sie nun am Anfang der Prozedur folgende Anweisung ein und führen Sie sie erneut aus:

Application.ScreenUpdating = False

Der Bereich wird viel schneller gefüllt, und Sie sehen das Ergebnis erst, wenn das Makro fertig ausgeführt und die Bildschirmaktualisierung (automatisch) auf True gesetzt ist.

Wenn Sie Code debuggen, endet die Programmausführung manchmal irgendwo in der Mitte, ohne dass Sie die Bildschirmaktualisierung wieder aktiviert haben. Dies führt manchmal dazu, dass das Anwendungsfenster von Excel nicht mehr reagiert. Der Ausweg aus diesem eingefrorenen Zustand ist einfach: Gehen Sie zurück zur VBE und führen Sie die folgende Anweisung im Direktfenster aus:

Application.ScreenUpdating = True

Automatische Berechnung deaktivieren

Wenn Sie ein Arbeitsblatt mit vielen komplexen Formeln haben, können Sie die Dinge möglicherweise erheblich beschleunigen, indem Sie den Berechnungsmodus auf manuell einstellen, während Ihr Makro ausgeführt wird. Wenn das Makro beendet ist, stellen Sie den Berechnungsmodus wieder auf automatisch.

Die folgende Anweisung setzt den Excel-Berechnungsmodus auf manuell:

Application.Calculation = xlCalculationManual

Führen Sie die nächste Anweisung aus, um den Berechnungsmodus auf automatisch zu setzen:

Application.Calculation = xlCalculationAutomatic

Wenn Ihr Code Zellen mit Formelergebnissen verwendet, bedeutet das Deaktivieren der Berechnung, dass die Zellen nicht neu berechnet werden, es sei denn, Sie weisen Excel ausdrücklich an, dies zu tun!

Beseitigung dieser lästigen Warnmeldungen

Wie Sie wissen, kann ein Makro automatisch eine Reihe von Aktionen ausführen. In vielen Fällen können Sie ein Makro starten und dann im Pausenraum abhängen, während Excel seine Arbeit erledigt. Bei einigen Excel-Vorgängen werden jedoch Meldungen angezeigt, die eine menschliche Reaktion erfordern. Diese Arten von Nachrichten bedeuten, dass Sie Excel während der Ausführung Ihres Makros nicht unbeaufsichtigt lassen können – es sei denn, Sie kennen den geheimen Trick.

Excel 2016 VBA-Geschwindigkeitstipps

Sie können Excel anweisen, diese Arten von Warnungen nicht anzuzeigen, während ein Makro ausgeführt wird.

Der geheime Trick, um diese Warnmeldungen zu vermeiden, besteht darin, die folgende VBA-Anweisung in Ihr Makro einzufügen:

Application.DisplayAlerts = False

Excel führt den Standardvorgang für diese Nachrichtentypen aus. Beim Löschen eines Blatts ist die Standardoperation Löschen. Wenn Sie sich nicht sicher sind, was der Standardvorgang ist, führen Sie einen Test durch, um zu sehen, was passiert.

Wenn die Prozedur beendet ist, setzt Excel die DisplayAlerts-Eigenschaft automatisch auf True zurück. Wenn Sie die Warnungen vor Abschluss des Verfahrens wieder aktivieren müssen, verwenden Sie diese Anweisung:

Application.DisplayAlerts = True

Objektreferenzen vereinfachen

Wie Sie wahrscheinlich bereits wissen, können Verweise auf Objekte sehr lang werden. Ein vollqualifizierter Verweis auf ein Range-Objekt kann beispielsweise so aussehen:

Workbooks("MyBook.xlsx").Worksheets("Sheet1") _
  .Bereich("Zinssatz")

Wenn Ihr Makro diesen Bereich häufig verwendet, möchten Sie möglicherweise eine Objektvariable erstellen, indem Sie den Befehl Set verwenden. Die folgende Anweisung weist beispielsweise dieses Range-Objekt einer Objektvariablen namens Rate zu:

Rate einstellen = Arbeitsmappen("MyBook.xlsx") _
  .Worksheets("Sheet1").Range("InterestRate")

Nachdem Sie diese Objektvariable definiert haben, können Sie anstelle der langen Referenz die Variable Rate verwenden. Sie können beispielsweise den Wert der Zelle mit dem Namen InterestRate ändern:

Rate.Wert = .085

Dies ist viel einfacher zu tippen als die folgende Anweisung:

Workbooks("MyBook.xlsx").Worksheets("Sheet1"). _
  Bereich ("Zinssatz") = .085

Neben der Vereinfachung Ihrer Codierung beschleunigt die Verwendung von Objektvariablen Ihre Makros erheblich.

Variablentypen deklarieren

Normalerweise müssen Sie sich nicht um die Art der Daten kümmern, die Sie einer Variablen zuweisen. Excel kümmert sich hinter den Kulissen um alle Details für Sie. Wenn Sie beispielsweise eine Variable namens MyVar haben, können Sie dieser Variable eine beliebige Zahl zuweisen. Sie können ihm später im Verfahren sogar eine Textzeichenfolge zuweisen.

Wenn Sie möchten, dass Ihre Prozeduren so schnell wie möglich ausgeführt werden, teilen Sie Excel mit, welcher Datentyp jeder Ihrer Variablen zugewiesen wird. Dies wird als Deklaration des Variablentyps bezeichnet.

Generell sollten Sie den Datentyp verwenden, der am wenigsten Byte benötigt, aber trotzdem alle ihm zugeordneten Daten verarbeiten kann. Wenn VBA mit Daten arbeitet, hängt die Ausführungsgeschwindigkeit von der Anzahl der Bytes ab, die VBA zur Verfügung hat. Mit anderen Worten, je weniger Byte Daten verwendet werden, desto schneller kann VBA auf die Daten zugreifen und diese manipulieren. Eine Ausnahme hiervon ist der Datentyp Integer. Wenn die Geschwindigkeit entscheidend ist, verwenden Sie stattdessen den Datentyp Long.

Wenn Sie eine Objektvariable verwenden, können Sie die Variable als einen bestimmten Objekttyp deklarieren. Hier ist ein Beispiel:

Dimmrate als Bereich
Rate einstellen = Arbeitsmappen("MyBook.xlsx") _
  .Worksheets("Sheet1").Range("InterestRate")

Verwenden der With-End With-Struktur

Müssen Sie eine Reihe von Eigenschaften für ein Objekt festlegen? Ihr Code wird schneller ausgeführt, wenn Sie die With-End With-Struktur verwenden. Ein zusätzlicher Vorteil besteht darin, dass Ihr Code möglicherweise leichter zu lesen ist.

Der folgende Code verwendet nicht With-End With:

Selection.HorizontalAlignment = xlCenter
Selection.VerticalAlignment = xlCenter
Selection.WrapText = True
Auswahl.Orientierung = 0
Selection.ShrinkToFit = False
Selection.MergeCells = False

Hier ist derselbe Code, umgeschrieben, um With-End With zu verwenden:

Mit Auswahl
  .HorizontalAlignment = xlCenter
  .VerticalAlignment = xlCenter
  .WrapText = True
  .Ausrichtung = 0
  .ShrinkToFit = False
  .MergeCells = False
Ende mit

Wenn Sie With-End With verwenden, stellen Sie sicher, dass jede Anweisung mit einem Punkt beginnt.

Leave a Comment

Erstellen Sie ein Histogramm mit einer Pivot-Tabelle für Excel-Dashboards

Erstellen Sie ein Histogramm mit einer Pivot-Tabelle für Excel-Dashboards

Erfahren Sie, wie Sie eine Pivot-Tabelle als Quelle für ein interaktives Histogramm in Excel-Dashboards nutzen können. Schritt-für-Schritt-Anleitung für die Erstellung von Histogrammen mit Pivot-Tabellen.

Excel 2019-Funktionen: Was ist neu?

Excel 2019-Funktionen: Was ist neu?

Lernen Sie die neuen Features von Microsoft Office Excel 2019, einschließlich neuer Funktionen, Diagrammtypen, Tagging spezieller Datentypen und Dokumentenlinks.

So passen Sie Excel 2016-Kontextmenüs in VBA an

So passen Sie Excel 2016-Kontextmenüs in VBA an

Erfahren Sie, wie Sie Excel 2016 Kontextmenüs in VBA anpassen. Nutzen Sie unser umfassendes Tutorial, um Ihre benutzerdefinierten Menüs und Symbolleisten zu erstellen.

Smartsheet 9.1.1

Smartsheet 9.1.1

Smartsheet ist eine dynamische Arbeitsplattform, mit der Sie Projekte verwalten, Arbeitsabläufe erstellen und mit Ihrem Team zusammenarbeiten können.

SharePoint

SharePoint

SharePoint ist ein webbasiertes Kollaborationssystem, das eine Vielzahl von Workflow-Anwendungen, „Listen“-Datenbanken und anderen Webkomponenten sowie Sicherheitsfunktionen verwendet, um die Zusammenarbeit von Unternehmensgruppen zu steuern.

Ewiger Kalender 1.0.38/1.0.36

Ewiger Kalender 1.0.38/1.0.36

Van Nien Calendar ist eine Kalenderanzeigeanwendung auf Ihrem Telefon, die Ihnen hilft, schnell das Monddatum auf Ihrem Telefon zu sehen und so Ihre wichtige Arbeit zu ordnen.

Microsoft Outlook 2021

Microsoft Outlook 2021

Microsoft Outlook ist eine Geschäfts- und Produktivitätsanwendung, die von der Microsoft Corporation entwickelt wurde.

ClickUp

ClickUp

ClickUp ist eine der am höchsten bewerteten Produktivitätsplattformen für jedes Unternehmen. Große Unternehmen wie Google, Booking.com, San Diego Padres und Uber nutzen ClickUp, um die Produktivität am Arbeitsplatz zu steigern.

PDF-XChange Viewer 2.5.322.10

PDF-XChange Viewer 2.5.322.10

PDF ist zu einem häufig verwendeten Format zum Lesen, Erstellen und Senden von Textdokumenten geworden. Im Gegenzug hat die Zahl der für diese Art der Dokumentation eingesetzten Programme zugenommen. PDF-XChange Viewer gehört zu einer wachsenden Zahl von PDF-Viewern.

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice bietet eine vollständige Suite von Office-Anwendungen, die mit Microsoft 365 konkurrieren können, insbesondere in Excel, PowerPoint und Word. Es ermöglicht Ihnen eine effektivere Verwaltung Ihrer Projekte und unterstützt mehrere Dateiformate.