VBA String mit Anführungszeichen

VBA - Visual Basic for Application

VBA hilft im Bereich vieler Office-Anwendungen den Büro-Alltag zu automatisieren. So lassen sich wiederkehrende Aktionen für zum Beispiel Word und Excel in ein Makro programmieren, welches dann einen Großteil der Arbeit übernimmt. Dabei kommt es öfter vor, dass man im VBA auch mit Variablen vom Datentyp String hantieren muss, welche bekanntermaßen in Anführungszeichen deklariert werden. Möchte man aber innerhalb des Strings Anführungszeichen verwenden, kann man dies nicht direkt tun, da dann der Compiler Anfang und Ende des Strings nicht richtig interpretieren kann.

Beispiel ohne Anführungszeichen

Hier mal ein Beispiel eines gewöhnlichen Strings, welcher in einer Messagebox ausgegeben wird und keine Anführungszeichen enthält, obwohl man bei dem Spruch eindeutig sieht, dass man den letzten Teil als direkte Rede in Anführungszeichen bzw. Gänsefüsschen setzen sollte.

Sub AnyMessageToUser()
Dim msg As String
msg = "Die dümmsten Ideen beginnen mit den Worten Halt mal kurz mein Bier!"
MsgBox (msg)
End Sub

Der String wird als MessageBox in Excel, Word und Co. ausgegeben:

Screenshot VBA MessageBox mit Ausgabe eines Strings/Zeichenketten
Ausgabe in MessageBox

Anführungszeichen verursachen Fehler beim Kompilieren

Fügt man die Anführungszeichen direkt in die Zeichenkette ein, dann meckert der VBA-Compiler herum, dass ein “Fehler beim Kompilieren” vorliegt.

Sub AnyMessageToUser()
Dim msg As String
msg = "Die dümmsten Ideen beginnen immer mit den Worten "Halt mal kurz mein Bier!""
MsgBox (msg)
End Sub

Die Fehlermeldung gibt es einerseits direkt beim Programmieren.

Screenshot Fehler beim Kompilieren bei falsch gesetzten Anführungszeichen im String
Fehler beim Kompilieren im VBA-Editor

Sollte man die Fehlermeldung irgnorieren, dann sieht man eine ähnliche Fehlermeldung spätestens beim Ausführen des Makros wieder.

Sreenshot Syntaxfehler bei falsch eingefügten Anführungszeichen im Quellcode
Syntaxfehler beim Ausführen des Makros

Anführungszeichen richtig einfügen

Wie macht man es nun richtig?

Doppelte Anführungszeichen

Nun ja man muss einfach die Anführungszeichen doppelt setzen. Der Code sieht dann wie folgt aus:

Sub AnyMessageToUser()
Dim msg As String
msg = "Die dümmsten Ideen beginnen immer mit den Worten ""Halt mal kurz mein Bier!"""
MsgBox (msg)
End Sub
Screenshot String-Ausgabe mit Gänsefüsschen
Anführungszeichen werden dargestellt

Im Code kann das manchmal etwas verwirrend aussehen, insbesondere, wenn 3 Anführungszeichen nacheinander auftauchen, wie hier am Ende der Zeichenkette. Noch verrückter sieht es aus, wenn man das Ganze mit verketteten Strings verwendet, da dann plötzlich 4 Anführungszeichen benötigt werden:

Sub AnyMessageToUser()
Dim msg, msg1, msg2 As String
msg1 = "Die dümmsten Ideen beginnen mit "
msg2 = "Halt mal kurz mein Bier!"
msg = msg1 & """" & msg2 & """"
MsgBox (msg)
End Sub

Chr(34) verwenden

Um diese Unleserlichkeit zu umgehen, gibt es noch eine andere Alternative. Man kann im VBA-Code die Funktion Chr() verwenden. Als Argument wird dieser Funktion ein charcode übergeben, welcher der ASCII-Tabelle entspricht. In unserem Fall benötigen wir Chr(34), da der Dezimalwert für das Anführungszeichen in der ASCII-Tabelle “34” ist. Damit lässt sich dann der Code wie folgt schreiben:

Sub AnyMessageToUser()
Dim msg, msg1, msg2 As String
msg1 = "Die dümmsten Ideen beginnen immer mit den Worten "
msg2 = "Halt mal kurz mein Bier!"
msg = msg1 & Chr(34) & msg2 & Chr(34)
MsgBox (msg)
End Sub

 

Bestseller Nr. 1
Bestseller Nr. 2

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert