VBA-Variantendatentyp (Dim-Variable)

Variant-Variablentyp

Eine Variant-Variable kann eine beliebige Zeit von Daten enthalten (String, Integer, Dezimalzahlen, Objekte usw.). Wenn Sie keinen Variablentyp deklarieren, wird Ihre Variable als Variante betrachtet.

Um eine Variant-Variable zu deklarieren, verwenden Sie die Dim-Anweisung (kurz für Dimension):

1 Dim varName als Variante
1 Dim rng als Variante

Um dann einer Variablen einen Wert zuzuweisen, verwenden Sie einfach das Gleichheitszeichen:

1 varName = "John"
1 rng = Sheets(1).Range("A1")

Das Einfügen in eine Prozedur sieht so aus:

12345678910 SubstrBeispiel()'die Varianten deklarierenDim strName als VarianteDim rng als Variante'die Variablen auffüllenstrName = "Fred Smith"Set rng = Sheets(1).Range("A1")'das Blatt ausfüllenrng.Wert = strNameEnd Sub

Wenn Sie den obigen Code ausführen, wird Zelle A1 in Blatt 1 mit "Fred Smith" gefüllt.

Aus den oben angegebenen Namen könnten wir schließen, dass die varName Text enthalten würde, und die objSheet würde ein Arbeitsblattobjekt enthalten. Aber eigentlich kann jede Art von Daten an die Variable geleitet werden.

Sie könnten die oben deklarierten Variablen wie folgt auffüllen und es würde kein Fehler auftreten.

1 varName = 6
1 objSheet - "Fred"

Die Verwendung von Variantenvariablen ist ungewöhnlich und wird nicht als bewährtes Verfahren angesehen. Gelegentlich sind jedoch Variant-Variablen nützlich.

Variantenvariable auf Modul- oder globaler Ebene deklarieren

Im vorherigen Beispiel haben Sie die Variant-Variable innerhalb einer Prozedur deklariert. Mit einer Prozedur deklarierte Variablen können nur innerhalb dieser Prozedur verwendet werden.

Stattdessen können Sie Variant-Variablen auf Modul- oder globaler Ebene deklarieren.

Modulebene

Modulebene Variablen werden am Anfang von Codemodulen mit dem deklariert Dim Stellungnahme.

Diese Variablen können mit jeder Prozedur in diesem Codemodul verwendet werden.

Globale Ebene

Globale Ebene Variablen werden auch am Anfang von Codemodulen deklariert. Anstatt jedoch die Dim Aussage verwenden Sie die Öffentlich -Anweisung, um anzugeben, dass die String-Variable für die Verwendung in Ihrem gesamten VBA-Projekt verfügbar ist.

1 Öffentlicher strName als Variante

Wenn Sie die Variant-Variable auf Modulebene deklariert und in einem anderen Modul verwendet haben, tritt ein Fehler auf.

Wenn Sie das Schlüsselwort Public verwendet hätten, um die Variant-Variable zu deklarieren, würde der Fehler nicht auftreten und die Prozedur würde perfekt ausgeführt.

Verwenden einer Variante zum Auffüllen von Excel

Betrachten Sie das folgende Verfahren:

12345678910111213141516171819 Untertestvariable'deklarieren Sie eine Zeichenfolge, die den Produktnamen enthältDim strProdukt als Zeichenfolge'deklarieren Sie eine ganze Zahl, um die Produktmenge zu haltenDim iQty als ganze Zahl'verdoppeln deklarieren, um den Produktpreis und den Gesamtpreis zu haltenDim dblPreis als DoubledblTotal als Double dimmen'die Variablen auffüllenstrProduct = "Allzweckmehl"iMenge = 3dblPreis = "5,00 $"dblTotal = "15,00 $"'Excel-Tabelle ausfüllenRange("A1") = strProductBereich("A2") = iMengeRange("A3") = dblPreisRange("A4") = dblTotalEnd Sub

Wenn wir diesen Code ausführen, tritt der folgende Fehler auf.

Klicken Sie auf Debug

Sie können kein Dollarzeichen in die Variable einfügen, da die Variable als a . deklariert ist Doppelt, und können daher keine Zeichenfolgenwerte speichern.

Erklären dblPreis und dblTotal als Varianten, was bedeutet, dass Sie nicht auf einen Datentyp beschränkt sind.

1 Dim dblPrice als Variante
1 Dim dblTotal als Variante

Führen Sie den Code erneut aus und die Daten werden in der Excel-Tabelle angezeigt, wie sie sollten.

Beachten Sie, dass die in A4 und A5 eingegebenen Daten dann automatisch von Excel in Zahlen umgewandelt werden.

Deklarieren eines dynamischen Arrays

Variant-Variablen sind auch nützlich, wenn Sie ein dynamisches Array deklarieren, da sie es ermöglichen, die Größe des Arrays während der Laufzeit zu ändern.

Mit einemVarianten-Array, müssen Sie die Array-Größe nicht definieren. Die Größe wird automatisch angepasst.

123456789 UntervarianteArray()Dim arrList() als Variante'Werte definierenarrList= Array(1, 2, 3, 4)'Werte ändernarrList= Array(1,2,3,4,5,6)'Ausgangsposition 4MsgBox arrVar(4)End Sub

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

wave wave wave wave wave