Variablen und Konstanten in VBA

In VBA werden wie in jeder anderen Programmiersprache Variablen und Konstanten verwendet, um beliebige Werte zu speichern. Wie der Name schon sagt, können sich Variablen ändern, während Konstanten feste Werte speichern.

Zum Beispiel eine Konstante Pi speichert den Wert 3,14159265… Die Zahl „Pi“ ändert sich während der Ausführung des Programms nicht, aber es ist immer noch bequemer, einen solchen Wert als Konstante zu speichern.

Gleichzeitig können wir die Variable verwenden sVAT_Satz um den Mehrwertsteuersatz auf gekaufte Waren zu speichern. Variabler Wert sVAT_Satz kann je nach gekauftem Produkt variieren.

Datentypen

Alle Variablen und Konstanten sind von einem bestimmten Datentyp. Die folgende Tabelle listet die in VBA verwendeten Datentypen mit einer Beschreibung und einem Bereich möglicher Werte auf:

Datentyp GrößeBeschreibungWertebereich
Byte1 bytesPositive ganze Zahlen; oft für binäre Daten verwendetvon 0 um 255
Boolean2 bytesKann entweder True oder False seinRichtig oder falsch
ganze Zahl2 bytesGanze Zahlen (kein Bruchteil)von -32 bis +768
Lang4 bytesGroße ganze Zahlen (kein Bruchteil)от -2 147 483 648 до +2 147 483 647
Single4 bytesGleitkommazahl mit einfacher Genauigkeitvon -3.4e38 bis +3.4e38
Doppelt8 bytesGleitkommazahl mit doppelter Genauigkeitvon -1.8e308 bis +1.8e308
Währung8 bytesFließkommazahl mit einer festen Anzahl von Dezimalstellenот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
Datum8 bytesDatum und Uhrzeit – Daten vom Typ Datum werden durch eine Fließkommazahl dargestellt. Der ganzzahlige Teil dieser Zahl drückt das Datum aus und der Bruchteil die Uhrzeit.vom 1. Januar 100 bis 31. Dezember 9999
Betreff4 bytesObjektreferenzBeliebige Objektreferenz
Schnurverändert sichZeichensatz. Der String-Typ kann eine feste oder variable Länge haben. Häufiger verwendet mit variabler LängeFeste Länge – bis zu ca. 65 Zeichen. Variable Länge – bis zu etwa 500 Milliarden Zeichen
Varianteverändert sichKann ein Datum, eine Gleitkommazahl oder eine Zeichenfolge enthalten. Dieser Typ wird in Fällen verwendet, in denen nicht im Voraus bekannt ist, welche Art von Daten eingegeben werden.Zahl – Double, Zeichenfolge – Zeichenfolge

Wenn Sie die obige Tabelle verwenden und den richtigen Datentyp auswählen, können Sie den Speicher natürlich sparsamer verwenden (wählen Sie beispielsweise den Datentyp ganze Zahl beantragen müssen Lang or Single beantragen müssen Doppelt). Bei der Verwendung kompakterer Datentypen müssen Sie jedoch aufpassen, dass Ihr Code nicht versucht, unverhältnismäßig große Werte darin unterzubringen.

Variablen und Konstanten deklarieren

Anmerkung des Übersetzers: Apropos Variablen in VBA, es lohnt sich, einen weiteren sehr wichtigen Punkt zu erwähnen. Wenn wir eine Variable deklarieren, ihr aber keinen Wert zuweisen, wird sie mit einem Standardwert initialisiert:

• Textstrings werden mit leeren Strings initialisiert;

• Zahlen — Wert 0;

• Variablen eingeben Boolean - FALSCH;

• Daten – 30. Dezember 1899.

Bevor eine Variable oder Konstante verwendet werden kann, muss sie deklariert werden. Fügen Sie dazu dem Makro die folgende einfache Codezeile hinzu:

Dim Имя_Переменной As Тип_Данных

In der obigen Codezeile Variablennamen ist der Name der Variablen, die im Code verwendet wird, und Datentyp ist einer der Datentypen aus der etwas weiter oben in diesem Artikel angegebenen Tabelle. Zum Beispiel:

Dim sVAT_Rate As Single Dim i As Integer

Konstanten werden ähnlich deklariert, aber wenn Konstanten deklariert werden, muss ihr Wert sofort angegeben werden. Zum Beispiel so:

Konst. iMaxCount = 5000 Konst. iMaxScore = 100

Es ist nicht notwendig, Variablen in Excel zu deklarieren. Standardmäßig haben alle eingegebenen, aber nicht deklarierten Variablen in Excel den Typ Variante und kann sowohl numerische als auch Textwerte akzeptieren.

Somit kann der Programmierer die neue Variable jederzeit verwenden (auch wenn sie nicht deklariert wurde), und Excel behandelt sie als Typvariable Variante. Es gibt jedoch mehrere Gründe, warum dies nicht getan werden sollte:

  1. Speicherverbrauch und Rechengeschwindigkeit. Wenn Sie eine Variable nicht mit Angabe des Datentyps deklarieren, wird sie standardmäßig auf den Typ gesetzt Variante. Dieser Datentyp benötigt mehr Speicher als andere Datentypen. Ein paar zusätzliche Bytes pro Variable klingen vielleicht nicht nach viel, aber in der Praxis können Programme Tausende von Variablen haben (insbesondere bei der Arbeit mit Arrays). Daher wird der zusätzliche Speicher von Variablen wie z Variante, verglichen mit Variablen vom Typ ganze Zahl or Single, kann sich zu einer beträchtlichen Summe summieren. Außerdem Operationen mit Variablen vom Typ Variante viel langsamer ausgeführt werden als mit Variablen anderer Typen bzw. tausend Variablen des Typs mehr Variante kann Berechnungen erheblich verlangsamen.
  2. Vermeidung von Tippfehlern in Variablennamen. Wenn alle Variablen deklariert sind, kann die VBA-Anweisung verwendet werden − Option Explizit (wir werden später darüber sprechen), um alle nicht deklarierten Variablen zu identifizieren. Dadurch wird das Auftreten eines Fehlers im Programm durch einen falsch geschriebenen Variablennamen eliminiert. Verwenden Sie beispielsweise eine Variable mit dem Namen sVAT_Satz, können Sie einen Tippfehler machen und dieser Variablen einen Wert zuweisen und schreiben: „Mehrwertsteuer = 0,175“. Es wird erwartet, dass von nun an die Variable sVAT_Satz sollte den Wert 0,175 enthalten – tut es aber natürlich nicht. Wenn der Modus der obligatorischen Deklaration aller verwendeten Variablen aktiviert ist, zeigt der VBA-Compiler sofort einen Fehler an, da er die Variable nicht findet Mehrwertsteuersatz unter den angekündigten.
  3. Hervorheben von Werten, die nicht mit dem deklarierten Typ einer Variablen übereinstimmen. Wenn Sie eine Variable eines bestimmten Typs deklarieren und versuchen, ihr Daten eines anderen Typs zuzuweisen, erhalten Sie einen Fehler, der, wenn er nicht korrigiert wird, zum Absturz des Programms führen kann. Auf den ersten Blick mag dies wie ein guter Grund erscheinen, Variablen nicht zu deklarieren, aber bevor sich herausstellt, dass eine der Variablen die falschen Daten erhalten hat, die sie erhalten sollte – umso besser! Wenn das Programm andernfalls weiter ausgeführt wird, können die Ergebnisse falsch und unerwartet sein, und es wird viel schwieriger, die Ursache der Fehler zu finden. Es ist auch möglich, dass das Makro „erfolgreich“ ausgeführt wird. Dadurch bleibt der Fehler unbemerkt und es wird mit falschen Daten weitergearbeitet!

In diesem Zusammenhang ist es wünschenswert, einen falschen Datentyp zu erkennen und solche Fehler im Code so früh wie möglich zu korrigieren. Aus diesen Gründen wird empfohlen, beim Schreiben eines VBA-Makros alle Variablen zu deklarieren.

Option Explizit

Operator Option Explizit bewirkt, dass alle Variablen deklariert werden, die im VBA-Code verwendet werden, und kennzeichnet alle nicht deklarierten Variablen während der Kompilierung (bevor die Codeausführung beginnt) als Fehler. Die Anwendung dieses Operators ist nicht schwierig – schreiben Sie einfach diese Zeile ganz oben in die VBA-Datei:

Option Explicit

Wenn Sie immer einfügen möchten Option Explizit Oben in jedem neu erstellten VBA-Modul kann dies automatisch erfolgen. Dazu müssen Sie die Option aktivieren Variablendeklaration erforderlich in den VBA-Editor-Einstellungen.

Dies geschieht folgendermaßen:

  • Klicken Sie im Visual Basic-Editor-Menü auf Werkzeuge > Optionen
  • Öffnen Sie im angezeigten Dialogfeld die Registerkarte Herausgeber
  • Aktivieren Sie das Kontrollkästchen Variablendeklaration erforderlich und drücken Sie OK

Wenn aktiviert, die Zeichenfolge Option Explizit wird automatisch am Anfang jedes neu erstellten Moduls eingefügt.

Gültigkeitsbereich von Variablen und Konstanten

Jede deklarierte Variable oder Konstante hat ihren eigenen begrenzten Gültigkeitsbereich, dh einen begrenzten Teil des Programms, in dem diese Variable existiert. Der Gültigkeitsbereich hängt davon ab, wo die Deklaration der Variablen oder Konstanten vorgenommen wurde. Nehmen Sie zum Beispiel die Variable sVAT_Satz, die in der Funktion verwendet wird Gesamtkosten. In der folgenden Tabelle werden zwei Optionen für den Gültigkeitsbereich von Variablen erläutert sVAT_Satzan zwei verschiedenen Stellen im Modul deklariert:

Option Explicit Dim sVAT_Rate As Single Function Total_Cost() As Double ... End Function
Wenn die Variable sVAT_Satz ganz am Anfang des Moduls deklariert, dann ist der Gültigkeitsbereich dieser Variablen das gesamte Modul (d. h. die Variable sVAT_Satz wird von allen Verfahren in diesem Modul anerkannt).

Daher, wenn in der Funktion Gesamtkosten Variable sVAT_Satz wird ein Wert zugewiesen, dann verwendet die nächste Funktion, die innerhalb desselben Moduls ausgeführt wird, die Variable sVAT_Satz mit der gleichen Bedeutung.

Wenn jedoch irgendeine Funktion aufgerufen wird, die sich in einem anderen Modul befindet, dann dafür die Variable sVAT_Satz wird nicht bekannt sein.

Option Explizite Funktion Total_Cost() als Double Dim sVAT_Rate als Single ... End Function
Wenn die Variable sVAT_Satz am Anfang der Funktion deklariert Gesamtkosten, dann ist sein Gültigkeitsbereich nur auf diese Funktion beschränkt (d. h. innerhalb der Funktion Gesamtkosten, können Sie die Variable verwenden sVAT_Satz, aber nicht draußen).

Beim Versuch zu verwenden sVAT_Satz In einer anderen Prozedur meldet der VBA-Compiler einen Fehler, weil diese Variable nicht außerhalb der Funktion deklariert wurde Gesamtkosten (sofern der Operator verwendet wird Option Explizit).

Im oben gezeigten Beispiel wird die Variable auf Modulebene mit dem Schlüsselwort deklariert verdunkeln. Es kann jedoch erforderlich sein, dass deklarierte Variablen in anderen Modulen verwendet werden können. Deklarieren Sie in solchen Fällen anstelle eines Schlüsselworts eine Variable verdunkeln Schlüsselwort muss verwendet werden Öffentliche.

Übrigens, um statt des Schlüsselworts eine Variable auf Modulebene zu deklarieren verdunkeln Schlüsselwort verwendet werden Privat, was anzeigt, dass diese Variable nur für die Verwendung im aktuellen Modul vorgesehen ist.

Sie können auch Schlüsselwörter verwenden, um Konstanten zu deklarieren. Öffentliche и Privat, aber nicht anstelle des Schlüsselworts konst, zusammen damit.

Die folgenden Beispiele zeigen die Verwendung von Schlüsselwörtern Öffentliche и Privat auf Variablen und Konstanten angewendet.

Option Explicit Public sVAT_Rate As Single Public Const iMax_Count = 5000 ...    
In diesem Beispiel das Schlüsselwort Öffentliche verwendet, um eine Variable zu deklarieren sVAT_Satz und Konstanten iMax_Count. Der Umfang der auf diese Weise deklarierten Elemente ist das gesamte aktuelle Projekt.

Dies bedeutet, dass sVAT_Satz и iMax_Count wird in jedem Projektmodul verfügbar sein.

Option Explicit Private sVAT_Rate As Single Private Const iMax_Count = 5000 ...    
In diesem Beispiel, um eine Variable zu deklarieren sVAT_Satz und Konstanten iMax_Count Stichwort verwendet Privat. Der Umfang dieser Elemente ist das aktuelle Modul.

Dies bedeutet, dass sVAT_Satz и iMax_Count wird in allen Prozeduren des aktuellen Moduls verfügbar sein, aber nicht für Prozeduren in anderen Modulen.

Hinterlassen Sie uns einen Kommentar