VBA: Stringvariable mit Zellinhalt verursacht Fehler

thomash11

Grünschnabel
Hallo Forengemeinde

Zuerst einmal bitte ich um Entschuldigung für den nicht ganz sauberen Titel meines Beitrags - aber das Problem lässt sich nicht in 4 Wörtern beschreiben :)

Es geht um folgendes:

In Zelle A1 steht z.B.:
CONCATENATE(""a"",""b"")

In VBA mache ich dann folgendes:

Range("B1").FormulaR1C1 = "=" & Range("A1")

Dabei erhalte ich einen Laufzeitfehler 1004.

Jetzt kommt das, was ich nicht verstehe:
Benutze ich nun den String selbst, also ohne ihn aus der Zelle auszulesen, dann funktioniert es. Also:

Range("B1").FormulaR1C1 = "=" & "CONCATENATE(""a"",""b"")"

Jetzt steht in B1, wie es sein soll:
=VERKETTEN("a";"b")

Ich habe beim debuggen schon mehrmals verglichen, der String und die Variable sind identisch.

Irgend etwas muss beim einlesen des Strings aus der Zelle anders ablaufen, als bei direkter Verwendung des Strings.

Ich hoffe, ich konnte mein Problem einigermaßen verständlich schildern und jemand von euch hat eine Lösung dafür!

Auf jeden Fall schon mal vielen Dank für eure Bemühungen

Gruß
Thomas
 
Hallo Zvoni

Vielen Dank für deine Antwort!
Leider bringt mich dies nicht weiter.
Zum einen hatte ich diese Option bereits aktiviert, zum anderen funktionieren Makros bzw. VBA Code bei mir prinzipiell ja.
Das Problem ist eben wie gesagt die unterschiedliche Behandlung des Strings je nach Herkunft.
Ich schätze, dass er das eine mal die spätere Formel bereits vorher interpretiert oder sowas.

edit: Habe gerade bemerkt, dass Laufzeitfehler 1004 mehrere Ausprägungen hat.
Bei mir wird ein Anwendungs- oder Objektdefinierter Fehler geschmissen!
 
Zuletzt bearbeitet:
Ohne jetzt irgendwie testen zu koennen (bin im urlaub) kommt mir die Zeile

Range("B1").FormulaR1C1 = "=" & "CONCATENATE(""a"",""b"")"

doch etwas seltsam vor, speziell die doppelten Anfuehrungszeichen. Meinem Verstaendnis nach endet der String nach der oeffnenden Klammer. Versuch mal den String etwas auseinander zu pfluecken. Ich hatte in der Vergangenheit auch Probleme mit Anuehrungszeichen, welchen in einem String enthalten sein sollten. Ich hatte das so geloest, dass ich per Chr-Funktion den Ascii-Code der Anfuehrungszeichen verwendet habe, also in der Art

Range("B1").FormulaR1C1 = "=" & "CONCATENATE(" & chr(Asccii-CodeAnfuehrungszeichen) & "a" & chr(Asccii-CodeAnfuehrungszeichen) usw.....

Ich mag hier auch falsch liegen, vielleicht hat das doppelte Anfuehrungszeichen ja auch die gezeigte funktion.

Das einzigste was mir sonst noch ins auge faellt ist dass in

"=" & "CONCATENATE(""a"",""b"")

ein Komma zwischen a und b sitzt, anstatt wie bei =VERKETTEN("a";"b") ein semikolon
 
Also die Anweisung
Range("B1").FormulaR1C1 = "=" & "CONCATENATE(""a"",""b"")"
ist definitiv korrekt. Sie liefert ja auch das gewünschte Ergebnis.

Nur wenn ich "CON..." durch range("A1") ersetze (in der exakt das gleiche drin steht), dann tut es nicht!

Ansonsten ist was Anführungszeichen, Kommas und sowas angeht im String alles korrekt.
 
Zurück