Wer mit VBA programmiert, um sich bestimmte Aufgaben in der Microsoft Office Welt zu erleichtern, der kommt nicht umhin, dass auch mal verschiedene Datentypen in einen String konvertiert werden müssen, wie z.B. ein Datum, Integer-Zahlen oder Double-Zahlen. In diesem Beitrag soll es darum gehen, wie man einen bool’schen Wert, als den Datentyp Boolean, der True und False annehmen kann, in einen String (Zeichenkette) konvertieren kann.
Einfache Lösung mit CStr()
Für die Umwandlung einer Boolean-Variable in einen String verwendet man einfach die CStr-Funktion. Diese mächtig überladene Funktion eignet sich auch für andere Datentypen, um diese in eine Zeichenkette zu konvertieren.
In diesem Beispiel haben wir einfach ein Bool-Wert (myBool) auf True gesetzt, wandeln diesen in einen Zeichenkettenwert und weisen diesen der Variable myString zu. Diese wiederum bringen wir zur Anzeige in einer MessageBox.
Sub BooleanToString()
Dim myBool As Boolean
Dim myString As String
myBool = True
myString = CStr(myBool)
MsgBox myString, vbOKOnly, "Show Bool as String"
End Sub
An der Anzeige sehen wir, dass hier bereits die “Lokalisierung” mit eingreift. Es wird also nicht einfach “0” oder “1” oder “True” oder “False” ausgegeben, sondern “Wahr” oder “Falsch“. Das liegt daran, dass das Office-Programm auf die deutschen Sprachpakete eingestellt ist und in diesem Fall Excel gleich die Übersetzung von “True” in “Wahr” vornimmt.
Alternative individuelle Umwandlung: If-Anweisung
Zugegebenermaßen kann man bei einer solchen Konvertierung oftmals nix direkt mit den Werten “Wahr” oder “Falsch” anfangen. Ggf. eigenen sich diese noch zum Filtern in Excel. Durch eine einfach If-Then-Else-Anweisung kann man aber auch eine individuelle Umwandlung vornehmen und der String-Variable eigene Werte in Abhängigkeit von der Boolean-Variable zuweisen.
Sub BooleanToMyString()
Dim myBool As Boolean
Dim myString As String
myBool = False
If myBool = True Then
myString = "Okay!"
Else
myString = "Not Okay!"
End If
MsgBox myString, vbOKOnly, "Show Bool as String"
End Sub
Das dürfte in vielen Fällen die eigentlich bevorzugte Variante sein. Man überprüft einfach, ob ein Wert “True” ist und gibt dann einen individuellen Text aus.