VBA - Replace in Formeln
#1
Einen schönen Abend miteinander,

ich hadere aktuell mit einem Problem, bei der Fehler sich für mich nicht klar genug stellt um behoben zu werden. Nun hoffe ich, dass jemand von euch eine passende Idee
oder Lösung hat.

Wie in der angehängten Beispieldatei zu sehen ist, greife ich einige Daten über mehrere SVerweise ab. Diese Formeln sollen anschließend im VBA-Code mit der Replace-Variante
gegen fest definierte Strings ausgetauscht werden. Führt man den Sub aus, so funktioniert der Austausch (einfache Zuweisung) in Zelle "K19" problemlos. Das Austauschen innerhalb
der in den Zellen "R19:T19" stehenden SVerweise führt jedoch nicht zum gewünschten Ziel.

Hat jemand eine Idee woran dies liegen kann?

Vielen Dank für eure Hilfe und noch ein schönes restliches Wochenende.

Gruß Bookshelf3011


Angehängte Dateien
.xlsm   Beispieldatei.xlsm (Größe: 13,72 KB / Downloads: 1)
Top
#2
So,

nun bin ich durch mehrfache Suche nun doch auf eine Lösung gekommen. Ob es die richtige ist, lässt sich schwer sagen, doch zumindest behebt es mein Problem.
Innerhalb der SVerweise, welche durch den Code ausgetauscht werden sollten, befanden sich logischerweise auch Semikolons. Verwendet man nun mehrere Replaces
und spricht nur die Bereiche zwischen den Semikolons an, so funktioniert alles wie gewollt - scheinbar führen manche Zeichen (in diesem Fall das ";") zu Problemen.

Allen ein schönes restliches Wochenende.

Gruß Bookshelf3011
Top
#3
Hallo,

bei der Formula-Eigenschaft wird die englische Schreibweise erwartet, das heißt für die Trennung Parameter wird anstelle vom Semikolon das Komma erwartet. Oder Du verwendest die FormulaLocal-Eigenschaft

Code:
Sub ReplaceFormula_Beta()

Range("K19").Formula = Replace(Range("K19").Formula, "$B3", "$F3")

Range("R19").FormulaLocal = Replace(Range("R19").FormulaLocal, "$K19;$B$3:$E$3;2;FALSCH", "$K19;$F$3:$I$3;2;FALSCH")
Range("S19").FormulaLocal = Replace(Range("S19").FormulaLocal, "$K19;$B$3:$E$3;3;FALSCH", "$K19;$F$3:$I$3;3;FALSCH")
Range("T19").FormulaLocal = Replace(Range("T19").FormulaLocal, "$K19;$B$3:$E$3;4;FALSCH", "$K19;$F$3:$I$3;4;FALSCH")

End Sub

mit dem Nachteil, dass das Makro in anderen Ländern nicht funktioniert, siehe hier.
Gruß Stefan
Win 10 / Office 2016
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste