VBA – Der String-Datentyp (Dim Variable)
In this Article
String-Variablen-Typ
Der Datentyp String ist einer der am häufigsten verwendeten Datentypen in VBA. Er speichert „Zeichenketten“ aus Text.
Um eine String-Variable zu deklarieren, verwenden Sie die Dim-Anweisung (kurz für Dimension):
Dim strName as String
Um einer Variablen einen Wert zuzuweisen, verwenden Sie das Gleichheitszeichen:
strName = "Fred Smith"
Wenn Sie dies in eine Prozedur einbauen, sieht es so aus:
Sub strBeispiel()
'Die Zeichenkette deklarieren
Dim strName as String
'Die Zeichenkette auffüllen
strName = "Fred Smith"
'Die Meldungsbox anzeigen
MsgBox strName
End Sub
Wenn Sie den obigen Code ausführen, wird das folgende Meldungsfenster angezeigt:
Feste String-Variable
Es gibt eigentlich 2 Arten von String-Variablen, und zwar feste und variable.
Bei der „variablen“ String-Variablen kann die Länge der Zeichenkette (wie im vorherigen Beispiel gezeigt) beliebig sein. Dies ist am häufigsten der Fall.
Die „feste“ String-Variable definiert die Größe der Zeichenkette. Eine feste Zeichenkette kann bis zu 65.400 Zeichen enthalten.
Dim strName as string *20
Wenn Sie eine feste Variable definieren, wird die Anzahl der Zeichen in der Variable fixiert, auch wenn Sie weniger Zeichen verwenden.
Beachten Sie die Leerzeichen in der Grafik unten. Die Variable hat Platzhalter für den Rest der Zeichen in der Zeichenkette, da „Fred Smith“ aus weniger als 20 Zeichen besteht.
Wenn Sie jedoch eine Zeichenkette ohne Angabe der Länge deklariert haben, enthält die Zeichenkette nur so viele Zeichen, wie ihr übergeben werden.
String-Variable auf Modul- oder globaler Ebene deklarieren
Im vorherigen Beispiel haben Sie die Variable String innerhalb einer Prozedur deklariert. Variablen, die in einer Prozedur deklariert wurden, können nur innerhalb dieser verwendet werden.
Stattdessen können Sie String-Variablen auf der Modul- oder globalen Ebene deklarieren.
Modul-Ebene
Variablen auf Modulebene werden am Anfang von Codemodulen mit der Dim-Anweisung deklariert.
Diese Variablen können in jeder Prozedur in diesem Codemodul verwendet werden.
Globale Ebene
Variablen auf globaler Ebene werden ebenfalls am Anfang von Codemodulen deklariert. Anstelle der Dim-Anweisung verwenden Sie jedoch die Public-Anweisung, um anzugeben, dass die String-Variable in Ihrem gesamten VBA-Projekt verwendet werden kann.
Public strName as String
Wenn Sie die String-Variable auf Modulebene deklarieren und in einem anderen Modul verwenden, würde ein Fehler auftreten.
Wenn Sie jedoch das Schlüsselwort Public verwenden, um die String-Variable zu deklarieren, würde der Fehler nicht auftreten und die Prozedur würde einwandfrei ausgeführt.
Als String gespeicherte Werte umwandeln
Es kann vorkommen, dass Sie in Excel Werte, die als Text gespeichert sind, haben, z. B. wenn Sie eine CSV-Datei, die Text anstelle von Zahlen enthielt, importiert haben.
Beachten Sie, dass der Wert in A1 linksbündig ist, was auf einen Textwert hinweist.
Sie können eine VBA-Funktion verwenden, um diese Zahlen in Text umzuwandeln.
Sub WertUmwandeln()
'Die Zeichenkette auffüllen
strMenge = Range("A1")
'Die Double-Variable mit der Zeichenkette belegen
dblMenge = strMenge
'Füllt den Bereich mit der Zahl
Range("A1") = dblMenge
End Sub
Wenn Sie den Code ausführen, wird die Zahl nach rechts verschoben, was ein Zeichen dafür ist, dass sie jetzt als Zahl gespeichert ist.
Dies ist besonders nützlich, wenn Sie einen großen Zellenbereich in einer Schleife durchlaufen.
Sub WertUmwandeln()
Dim strMenge As String, dblMenge As Double
Dim zeile As Integer, i As Integer
'Die zu konvertierenden Zeilen zählen
zeile = Range("A1", Range("A1").End(xlDown)).Rows.Count
'Alle Zellen durchlaufen und jede einzelne in eine Zahl umwandeln
For i = 0 To zeile - 1
'Die Zeichenkette auffüllen
strMenge = Range("A1").Offset(i, 0)
'Die Double-Variable mit der Zeichenkette belegen
dblMenge = strMenge
'Den Bereich mit der Zahl füllen
Range("A1").Offset(i, 0) = dblMenge
Next i
End Sub
Das Ergebnis besteht darin, dass alle Zellen dann in Zahlen umgewandelt werden.
Als Werte gespeicherte Zeichenkette umwandeln
In ähnlicher Weise kann es Werte geben, die Sie von einer Zeichenkette in einen Zahlenwert umwandeln müssen, zum Beispiel, wenn Sie eine führende Null bei einer Telefonnummer benötigen.
Sub ZeichenketteUmwandeln()
Dim strTelefonnr As String, dblTelefonnr As Double
Dim zeile As Integer, i As Integer
'Die zu konvertierenden Zeilen zählen
zeile = Range("A1", Range("A1").End(xlDown)).Rows.Count
'Zellen durchlaufen und jede in eine Zahl umwandeln
For i = 0 To zeile - 1
'Die Zeichenfolge auffüllen
dblTelefonnr = Range("A1").Offset(i, 0)
'Die Double-Variable mit der Zeichenkette belegen
strTelefonnr = "'0" & dblTelefonnr
'Den Bereich mit der Zahl füllen
Range("A1").Offset(i, 0) = strTelefonnr
Next i
End Sub
Beachten Sie, dass Sie die Textzeichenfolge mit einem Hochkomma (‚) vor der Null beginnen müssen, um Excel anzuweisen, den Wert als Zeichenfolge einzugeben.