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:

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.

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

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

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