Inhaltsverzeichnis
Suchen
Links
|
|
Anführungszeichen in Zeichenketten
Versionen: Alle
Wenn man in ein VBA-Makro mit der FormulaLocal-Eigenschaft eine Formel in eine Tabellenzelle schreiben will geht das an und für sich recht einfach:
ActiveSheet.Range("A3").FormulaLocal = "=A1+A2"
Die gewünschte Formel wird in Anführungszeichen gesetzt und die Formel wird korrekt in die gewünschte Zelle eingetragen.
Wenn aber zum Beispiel die Tabellenfunktion ADRESSE zum Einsatz kommt, die als letzten Parameter den Namen eines Tabellenblatts erwartet, wird es schon etwas schwieriger. Die gewünschte Formel lautet:
=ADRESSE(5;2;1;WAHR;"Tabelle1")
Wenn man diese Zeile nun einfach in Anführungszeichen einschließt und dann an die FormulaLocal-Eigenschaft übergibt, erhält man einen Laufzeitfehler!
Soll eine Formel, in der "offiziell" Anführungszeichen benötigt werden, per VBA in eine Zelle geschrieben werden, gibt man die Anführungszeichen einfach doppelt ein. Wenn die oben genannte ADRESSE-Formel per VBA-Code zum Beispiel in Zelle A1 des aktiven Blatts hinein soll, geht dies mit der folgenden Anweisung:
ActiveSheet.Range("A1").FormulaLocal = "=ADRESSE(5;2;1;WAHR;""Tabelle1"")"
Im Tabellenblatt erscheint daraufhin das Formelergebnis, und zwar "Tabelle1!$B$5". Die doppelten Anführungszeichen unterbrechen nicht den Textstring - das heißt, den Verkettungsoperator "&" benötigt man in diesem Fall nicht.
Etwas anderes ist es, wenn der Tabellennamen in einer Variablen gespeichert wurde und dann diese Variable in die FormulaLocal-Eigenschaft integriert werden soll. Das muss dann etwa so aussehen:
Sub Test()
Dim strTabelle As String
strTabelle = "Tabelle1"
ActiveSheet.Range("A1") _
.FormulaLocal = "=ADRESSE(5;2;1;WAHR;""" & strTabelle & """)"
End Sub
Hier wird der Verkettungsoperator benötigt um die Variable "strTabelle" in die Formel-Zeichenfolge einzubinden. In diesem Fall müssen vor und hinter der Variablen jeweils drei Anführungszeichen verwendet werden: zwei in derselben Funktion wie beim feststehenden Tabellennamen und eins für die Begrenzung der Zeichenfolge-Teile.
|