Grundlegendes zu Excel VBA-Datentypen (Variablen und Konstanten)

In Excel VBA müssen Sie häufig Variablen und Konstanten verwenden.

Wenn Sie mit VBA arbeiten, ist eine Variable ein Ort im Arbeitsspeicher Ihres Computers, an dem Sie Daten speichern können. Der Datentyp, den Sie in einer Variablen speichern können, hängt vom Datentyp der Variablen ab.

Wenn Sie beispielsweise ganze Zahlen in einer Variablen speichern möchten, wäre Ihr Datentyp „Integer“ und wenn Sie Text speichern möchten, wäre Ihr Datentyp „String“.

Mehr zu Datentypen später in diesem Tutorial.

Während sich der Wert einer Variablen ändert, während der Code ausgeführt wird, enthält eine Konstante einen Wert, der sich nie ändert. Als gute Codierungspraxis sollten Sie den Datentyp von beiden definieren - variabel und konstant.

Warum Variablen in VBA verwenden?

Wenn Sie in VBA codieren, benötigen Sie Variablen, die Sie verwenden können, um einen Wert zu speichern.

Der Vorteil der Verwendung einer Variablen besteht darin, dass Sie den Wert der Variablen im Code ändern und weiterhin im Code verwenden können.

Unten ist beispielsweise ein Code, der die ersten 10 positiven Zahlen hinzufügt und dann das Ergebnis in einem Meldungsfeld anzeigt:

Sub AddFirstTenNumbers() Dim Var As Integer Dim i As Integer Dim k as Integer For i = 1 To 10 k = k + i Next i MsgBox k End Sub

Der obige Code enthält drei Variablen - Var, ich, und k.

Der obige Code verwendet eine For Next-Schleife, in der alle diese drei Variablen geändert werden, wenn die Schleifen abgeschlossen sind.

Der Nutzen einer Variablen liegt darin, dass sie während der Bearbeitung Ihres Codes geändert werden kann.

Im Folgenden sind einige Regeln aufgeführt, die Sie bei der Benennung der Variablen in VBA beachten sollten:

  1. Sie können Alphabete, Zahlen und Satzzeichen verwenden, aber die erste Zahl muss ein Alphabet sein.
  2. Leerzeichen oder Punkte dürfen im Variablennamen nicht verwendet werden. Sie können jedoch einen Unterstrich verwenden, um die Variablennamen lesbarer zu machen (z. B. Interest_Rate).
  3. Sie können keine Sonderzeichen (#, $, %, & oder !) in Variablennamen verwenden
  4. VBA unterscheidet nicht zwischen Groß- und Kleinschreibung im Variablennamen. „InterestRate“ und „Interestrate“ sind also für VBA gleich. Sie können gemischte Groß-/Kleinschreibung verwenden, um die Lesbarkeit der Variablen zu verbessern.
  5. VBA hat einige reservierte Namen, die Sie für einen Variablennamen verwenden können. Sie können beispielsweise das Wort „Next“ nicht als Variablennamen verwenden, da es ein reservierter Name für die For Next-Schleife ist.
  6. Ihr Variablenname kann bis zu 254 Zeichen lang sein.

Datentyp von Variablen

Um Variablen optimal zu nutzen, empfiehlt es sich, den Datentyp der Variablen anzugeben.

Der Datentyp, den Sie einer Variablen zuweisen, hängt von dem Datentyp ab, den diese Variable enthalten soll.

Nachfolgend finden Sie eine Tabelle mit allen verfügbaren Datentypen, die Sie in Excel VBA verwenden können:

Datentyp Verwendete Bytes Wertebereich
Byte 1 Byte 0 bis 255
Boolesches 2 Byte Richtig oder falsch
Ganze Zahl 2 Byte -32.768 bis 32.767
Long (lange ganze Zahl) 4 Bytes -2.147.483.648 bis 2.147.483.647
Einzel 4 Bytes -3.402823E38 bis -1.401298E-45 für negative Werte; 1.401298E-45 bis 3.402823E38 für positive Werte
Doppelt 8 Byte -1.79769313486231E308 bis -4.94065645841247E-324 für negative Werte; 4.94065645841247E-324 bis 1.79769313486232E308 für positive Werte
Währung 8 Byte -922.337.203.685.477,5808 bis 922.337.203.685.477,5807
Dezimal 14 Byte +/-79.228.162.514.264.337.593.543.950.335 ohne Komma;+/-7.9228162514264337593543950335 mit 28 Nachkommastellen
Datum 8 Byte 1. Januar 100 bis 31. Dezember 9999
Objekt 4 Bytes Beliebige Objektreferenz
Zeichenfolge (variable Länge) 10 Byte + Stringlänge 0 bis ungefähr 2 Milliarden
Zeichenfolge (feste Länge) Länge der Saite 1 bis ca. 65.400
Variante (mit Zahlen) 16 Byte Beliebiger numerischer Wert bis zum Bereich eines Double
Variante (mit Zeichen) 22 Byte + Stringlänge Gleicher Bereich wie für String mit variabler Länge
Benutzerdefinierte Variiert Der Bereich jedes Elements entspricht dem Bereich seines Datentyps.

Wenn Sie in Ihrem Code einen Datentyp für eine Variable angeben, wird VBA mitgeteilt, wie diese Variable gespeichert und wie viel Speicherplatz dafür reserviert werden soll.

Wenn Sie beispielsweise eine Variable verwenden müssen, die die Monatsnummer enthalten soll, können Sie den Datentyp BYTE verwenden (der Werte von 0 bis 255 aufnehmen kann). Da die Monatszahl nicht über 12 liegen wird, wird dies gut funktionieren und auch weniger Speicher für diese Variable reservieren.

Wenn Sie hingegen eine Variable zum Speichern der Zeilennummern in Excel benötigen, müssen Sie einen Datentyp verwenden, der eine Zahl bis 1048756 aufnehmen kann. Verwenden Sie daher am besten den Datentyp Long.

Deklarieren von variablen Datentypen

Als gute Programmierpraxis sollten Sie beim Schreiben des Codes den Datentyp von Variablen (oder Konstanten) deklarieren. Dadurch wird sichergestellt, dass VBA der Variablen nur den angegebenen Speicher zuweist, und dies kann die Ausführung Ihres Codes beschleunigen.

Unten ist ein Beispiel, in dem ich verschiedene Datentypen für verschiedene Variablen deklariert habe:

Sub DeclaringVariables() Dim X As Integer Dim Email As String Dim FirstName As String Dim RowCount As Long Dim TodayDate As Date End Sub

Um einen variablen Datentyp zu deklarieren, müssen Sie die DIM-Anweisung (kurz für Dimension) verwenden.

In 'Dim X als Integer‘, habe ich die Variable X als Integer-Datentyp deklariert.

Wenn ich es jetzt in meinem Code verwende, würde VBA wissen, dass X nur den Integer-Datentyp enthalten kann.

Wenn ich versuche, ihm einen Wert zuzuweisen, der keine ganze Zahl ist, erhalte ich eine Fehlermeldung (wie unten gezeigt):

Hinweis: Sie können den Datentyp auch nicht deklarieren. In diesem Fall berücksichtigt VBA automatisch die Variable des Datentyps Variant. Ein abweichender Datentyp kann jeden Datentyp aufnehmen. Dies mag zwar praktisch erscheinen, es ist jedoch keine bewährte Methode, den Datentyp Variant zu verwenden. Es nimmt tendenziell mehr Speicher in Anspruch und kann dazu führen, dass Ihr VBA-Code langsamer ausgeführt wird.

Variablendeklaration obligatorisch machen (Option Explizit)

Sie können zwar codieren, ohne jemals Variablen zu deklarieren, es ist jedoch eine gute Vorgehensweise, dies zu tun.

Abgesehen davon, dass Sie Speicher sparen und Ihren Code effizienter machen, hat das Deklarieren von Variablen einen weiteren großen Vorteil – es hilft, Fehler abzufangen, die durch falsch geschriebene Variablennamen verursacht werden.

Um sicherzustellen, dass Sie gezwungen sind, Variablen zu deklarieren, fügen Sie die folgende Zeile am Anfang Ihres Moduls hinzu.

Option explizit

Wenn Sie „Option Explicit“ hinzufügen, müssen Sie alle Variablen deklarieren, bevor Sie den Code ausführen. Wenn eine Variable nicht deklariert wurde, zeigt VBA einen Fehler an.

Die Verwendung von Option Explicit bietet einen großen Vorteil.

Manchmal kann es passieren, dass Sie einen Tippfehler machen und einen falschen Variablennamen eingeben.

Normalerweise kann VBA nicht erkennen, ob es sich um einen Fehler oder Absicht handelt. Wenn Sie jedoch „Option Explicit“ verwenden, sieht VBA den falsch geschriebenen Variablennamen als neue Variable, die nicht deklariert wurde, und zeigt Ihnen einen Fehler an. Dies wird Ihnen helfen, diese falsch geschriebenen Variablennamen zu identifizieren, die in einem langen Code ziemlich schwer zu erkennen sind.

Unten ist ein Beispiel, in dem die Verwendung von „Option Explicit“ den Fehler identifiziert (der nicht abgefangen worden wäre, wenn ich „Option Explicit“ nicht verwendet hätte).

Sub CommissionCalc() Dim CommissionRate As Double If Range("A1").Value > 10000 Then CommissionRate = 0.1 Else CommissionRtae = 0.05 End If MsgBox "Total Commission: " & Range("A1").Value * CommissionRate End Sub

Beachten Sie, dass ich das Wort „Provisionsrate“ einmal in diesem Code falsch geschrieben habe.

Wenn ich Option Explicit nicht verwende, würde dieser Code ausgeführt und mir den falschen Gesamtprovisionswert anzeigen (falls der Wert in Zelle A1 weniger als 10000 beträgt).

Aber wenn ich Option Explicit oben im Modul verwende, kann ich diesen Code nicht ausführen, bevor ich entweder das falsch geschriebene Wort korrigiere oder es als eine andere Variable deklariere. Es wird ein Fehler wie unten gezeigt angezeigt:

Sie können zwar jedes Mal, wenn Sie codieren, die Zeile „Option Explicit“ einfügen, aber hier sind die Schritte, damit sie standardmäßig angezeigt wird:

  1. Klicken Sie in der Symbolleiste des VB-Editors auf Tools.
  2. Klicken Sie auf Optionen.
  3. Klicken Sie im Dialogfeld Optionen auf die Registerkarte Editor.
  4. Aktivieren Sie die Option – „Variablendeklaration erforderlich“.
  5. OK klicken.

Sobald Sie diese Option aktiviert haben, fügt VBA beim Öffnen eines neuen Moduls automatisch die Zeile "Option Explicit" hinzu.

Hinweis: Diese Option wirkt sich nur auf alle Module aus, die Sie erstellen, nachdem diese Option aktiviert wurde. Alle vorhandenen Module sind nicht betroffen.

Gültigkeitsbereich von Variablen

Bisher haben wir gesehen, wie man eine Variable deklariert und ihr Datentypen zuweist.

In diesem Abschnitt werde ich den Geltungsbereich von Variablen behandeln und wie Sie eine Variable deklarieren können, die nur in einer Unterroutine, in einem ganzen Modul oder in allen Modulen verwendet wird.

Der Gültigkeitsbereich einer Variablen bestimmt, wo die Variable in VBA verwendet werden kann.

Es gibt drei Möglichkeiten, eine Variable in Excel VBA festzulegen:

  1. Innerhalb eines einzelnen Unterprogramms (Lokale Variablen)
  2. Innerhalb eines Moduls (Variablen auf Modulebene)
  3. In allen Modulen (öffentliche Variablen)

Schauen wir uns jeden von ihnen im Detail an.

Innerhalb eines einzelnen Unterprogramms (lokale Variablen)

Wenn Sie eine Variable innerhalb einer Subroutine/Prozedur deklarieren, ist diese Variable nur für diese Subroutine verfügbar.

Sie können es nicht in anderen Unterprogrammen des Moduls verwenden.

Sobald das Unterprogramm beendet ist, wird die Variable gelöscht und der von ihr belegte Speicher freigegeben.

Im folgenden Beispiel werden die Variablen innerhalb des Unterprogramms deklariert und würden gelöscht, wenn dieses Unterprogramm endet.

Innerhalb eines Moduls (Variablen auf Modulebene)

Wenn eine Variable für alle Prozeduren in einem Modul verfügbar sein soll, müssen Sie sie am Anfang des Moduls (und nicht in einer Subroutine) deklarieren.

Sobald Sie sie oben im Modul deklariert haben, können Sie diese Variable in allen Prozeduren in diesem Modul verwenden.

Im obigen Beispiel wird die Variable „i“ oben im Modul deklariert und steht allen Modulen zur Verfügung.

Beachten Sie, dass die Variablen auf Modulebene nicht gelöscht werden, wenn die Subroutine endet (sie behält ihren Wert).

Unten ist ein Beispiel, wo ich zwei Codes habe. Wenn ich das erste Verfahren und dann das zweite ausführe, wird der Wert von 'i' 30 (da es den Wert 10 aus dem ersten Verfahren trägt)

In allen Modulen (öffentliche Variablen)

Wenn eine Variable in allen Prozeduren der Arbeitsmappe verfügbar sein soll, müssen Sie sie mit dem Schlüsselwort Public (anstelle von DIM) deklarieren.

Die folgende Codezeile oben im Modul würde die Variable „Provisionsrate“ in allen Modulen der Arbeitsmappe verfügbar machen.

 Öffentliche KommissionRate As Double

Sie können die Variablendeklaration (mit dem Schlüsselwort Public) in jedes der Module einfügen (am Anfang vor jeder Prozedur).

Statische Variablen (die den Wert beibehalten)

Wenn Sie mit lokalen Variablen arbeiten, würde die Variable nach Beendigung der Prozedur ihren Wert verlieren und aus dem VBA-Speicher gelöscht werden.

Wenn Sie möchten, dass die Variable den Wert behält, müssen Sie die Statisch Stichwort.

Lassen Sie mich Ihnen zunächst zeigen, was im Normalfall passiert.

Wenn ich die Prozedur im folgenden Code mehrmals ausführe, wird jedes Mal der Wert 10 angezeigt.

Sub Procedure1() Dim i As Integer i = i + 10 MsgBox i End Sub

Wenn ich jetzt das Schlüsselwort Static anstelle von DIM verwende und die Prozedur mehrmals ausführe, werden weiterhin Werte in Schritten von 10 angezeigt. Dies geschieht, da die Variable „i“ ihren Wert behält und in der Berechnung verwendet.

Sub Procedure1() Statisch i As Integer i = i + 10 MsgBox i End Sub

Deklarieren von Konstanten in Excel VBA

Während sich Variablen während der Codeausführung ändern können, können Sie Konstanten verwenden, wenn Sie feste Werte haben möchten.

Mit einer Konstante können Sie einer benannten Zeichenfolge einen Wert zuweisen, den Sie in Ihrem Code verwenden können.

Der Vorteil der Verwendung einer Konstanten besteht darin, dass sie das Schreiben und Verstehen von Code erleichtert und Ihnen außerdem ermöglicht, alle festen Werte von einem Ort aus zu steuern.

Wenn Sie beispielsweise Provisionen berechnen und der Provisionssatz 10 % beträgt, können Sie eine Konstante (Provisionsrate) erstellen und dieser den Wert 0,1 zuweisen.

Wenn sich der Provisionssatz in Zukunft ändert, müssen Sie die Änderung nur an einer Stelle vornehmen, anstatt sie überall manuell im Code zu ändern.

Unten ist ein Codebeispiel, in dem ich der Konstante einen Wert zugewiesen habe:

Sub CalculateCommission() Dim CommissionValue As Double Const CommissionRate As Double = 0.1 CommissionValue = Range("A1") * CommissionRate MsgBox CommissionValue End Sub

Die folgende Zeile wird verwendet, um die Konstante zu deklarieren:

Const Commission Rate As Double = 0.1

Wenn Sie Konstanten deklarieren, müssen Sie mit dem Schlüsselwort ‘Konst‘, gefolgt vom Namen der Konstanten.

Beachten Sie, dass ich in diesem Beispiel den Datentyp der Konstanten als Double angegeben habe. Auch hier empfiehlt es sich, den Datentyp anzugeben, damit Ihr Code schneller und effizienter ausgeführt wird.

Wenn Sie den Datentyp nicht deklarieren, wird er als abweichender Datentyp betrachtet.

Genau wie Variablen können auch Konstanten einen Gültigkeitsbereich haben, der davon abhängt, wo und wie diese deklariert werden:

  1. Innerhalb eines einzelnen Unterprogramms (Lokale Konstanten): Diese stehen im Unterprogramm/der Prozedur zur Verfügung, in der diese deklariert werden. Am Ende der Prozedur werden diese Konstanten aus dem Systemspeicher gelöscht.
  2. Innerhalb eines Moduls (Konstanten auf Modulebene): Diese werden oben im Modul (vor jeder Prozedur) deklariert. Diese stehen für alle Verfahren des Moduls zur Verfügung.
  3. In allen Modulen (öffentliche Konstanten): Diese werden mit dem Schlüsselwort ‚Public‘ am Anfang jedes Moduls (vor jeder Prozedur) deklariert. Diese stehen allen Verfahren in allen Modulen zur Verfügung.

Die folgenden VBA-Tutorials könnten Ihnen auch gefallen:

  • So zeichnen Sie ein Makro in Excel auf
  • Arbeiten mit Zellen und Bereichen in Excel VBA
  • Arbeiten mit Arbeitsblättern mit Excel VBA
  • Arbeiten mit Arbeitsmappen in Excel VBA
  • VBA-Ereignisse
  • Excel VBA-Schleifen
  • So führen Sie ein Makro in Excel aus
  • If Then Else-Anweisung in Excel VBA.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave