String-Variablentyp
Der Datentyp String ist einer der häufigsten Datentypen in VBA. Es speichert "Strings" von Text.
Um eine variable String-Variable zu deklarieren, verwenden Sie die Dim-Anweisung (kurz für Dimension):
1 | Dim strName als String |
Um einer Variablen einen Wert zuzuweisen, verwenden Sie das Gleichheitszeichen:
1 | strName = "Fred Smith" |
Das Einfügen in eine Prozedur sieht so aus:
12345678 | SubstrBeispiel()'deklariere die ZeichenfolgeDim strName als Zeichenfolge'die Zeichenfolge auffüllenstrName = "Fred Smith"'zeige die NachrichtenboxMsgBox-StrnameEnd Sub |
Wenn Sie den obigen Code ausführen, wird das folgende Meldungsfeld angezeigt.
Feste String-Variable
Es gibt eigentlich 2 Arten von String-Variablen - fest und variabel.
Die String-Variable „variable“ (im vorherigen Beispiel gezeigt) ermöglicht es Ihrem String, eine beliebige Länge zu haben. Dies ist am häufigsten.
Die String-Variable „fixed“ definiert die Größe des Strings. Eine feste Zeichenfolge kann bis zu 65.400 Zeichen enthalten.
1 | Dim strName als String *20 |
Wenn Sie eine feste Variable definieren, wird die Anzahl der Zeichen in der Variablen festgelegt, auch wenn Sie weniger Zeichen verwenden.
Beachten Sie die Leerzeichen in der Grafik unten – die Variable hat Platzhalter für die restlichen Zeichen in der Zeichenfolge, da „Fred Smith“ weniger als 20 Zeichen umfasst.
Wenn Sie jedoch eine Zeichenfolge ohne Angabe der Länge deklariert haben, enthält die Zeichenfolge nur so viele Zeichen, wie ihr übergeben werden.
String-Variable auf Modul- oder globaler Ebene deklarieren
Im vorherigen Beispiel haben Sie die String-Variable innerhalb einer Prozedur deklariert. Mit einer Prozedur deklarierte Variablen können nur innerhalb dieser Prozedur verwendet werden.
Stattdessen können Sie String-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 String |
Wenn Sie die String-Variable auf Modulebene deklariert und in einem anderen Modul verwendet haben, tritt ein Fehler auf.
Wenn Sie jedoch das Schlüsselwort Public verwenden, um die Zeichenfolgenvariable zu deklarieren, tritt der Fehler nicht auf und die Prozedur wird einwandfrei ausgeführt.
Als String gespeicherte Werte konvertieren
Es kann vorkommen, dass Sie Werte in Excel haben, die als Text gespeichert sind. Sie haben beispielsweise eine CSV-Datei importiert, die möglicherweise Text anstelle von Zahlen eingefügt hat.
Beachten Sie, dass der Wert in A1 linksbündig ist, was auf einen Textwert hinweist.
Sie können a . verwenden VBA-Funktion kann verwendet werden, um diese Zahlen in Text umzuwandeln
12345678 | Sub ConvertValue()'die Zeichenfolge auffüllenstrQty = Range("A1")'bevölkern Sie das Double mit der ZeichenfolgedblQty = strQty'Fülle den Bereich mit der Zahl aufRange("A1") = dblQtyEnd Sub |
Sobald Sie den Code ausführen, wird die Nummer nach rechts verschoben, um anzuzeigen, dass sie jetzt als Nummer gespeichert ist.
Dies ist besonders nützlich, wenn Sie einen großen Bereich von Zellen durchlaufen.
123456789101112131415 | Sub ConvertValue()Dim strQty As String, dblQty As DoubleDim rw As Integer, i As Integer'zähle die zu konvertierenden Zeilenrw = Range("A1", Range("A1").End(xlDown)).Rows.Count'Schleife durch die Zellen und wandle jede in eine Zahl umFür i = 0 bis rw - 1'die Zeichenfolge auffüllenstrQty = Range("A1").Offset(i, 0)'bevölkern Sie das Double mit der ZeichenfolgedblQty = strQty'Fülle den Bereich mit der Zahl aufRange("A1").Offset(i, 0) = dblQtyAls nächstesEnd Sub |
Das Ergebnis wird sein, dass alle Zellen dann in Zahlen umgewandelt werden
Sind Sie es leid, nach VBA-Codebeispielen zu suchen? Probieren Sie AutoMacro aus!
Als Werte gespeicherte Zeichenfolge konvertieren
Ebenso kann es Werte geben, die Sie von einer Zeichenfolge in einen Wert umwandeln müssen – zum Beispiel wenn Sie eine führende Null für eine Telefonnummer benötigen.
123456789101112131415 | Sub ConvertString()Dim strPhone als String, dblPhone als DoubleDim rw As Integer, i As Integer'zähle die zu konvertierenden Zeilenrw = Range("A1", Range("A1").End(xlDown)).Rows.Count'Schleife durch die Zellen und wandle jede in eine Zahl umFür i = 0 bis rw - 1'die Zeichenfolge auffüllendblPhone = Range("A1").Offset(i, 0)'bevölkern Sie das Double mit der ZeichenfolgestrPhone = "'0" & dblPhone'Fülle den Bereich mit der Zahl aufRange("A1").Offset(i, 0) = strphoneAls nächstesEnd Sub |
Beachten Sie, dass Sie die Textzeichenfolge mit einem Apostroph (‘) vor der Null beginnen müssen, um Excel anzuweisen, den Wert als Zeichenfolge einzugeben.