Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Suchen-ersetzen VBA

Forumthread: Suchen-ersetzen VBA

Suchen-ersetzen VBA
11.03.2019 10:36:49
Joachim
Hallo,
In die Hilfsspalte Q schreib ich den Wert, mach 2 Nachkommastellen, in R kommt die Formel rein, die aus Q Textformat macht, lösch die Formel wieder und dann den Wert in Q auch. Nun muss aus Komma Punkt werden (aus 301,78 muss 301.78). Aber der Replace-Befehl klappt nicht, die Werte stehen dann wieder rechts und das Komma ist auch noch drin.
Ziel ist, die Daten dann als csv zu speichern und in eine MySQL-DB einzulesen. Dort sind die Werte leider mit Punkt drin.
Hier mein Code:
Sheets("PHP").Range("Q" & i).Value = Sheets(tabelle).Range("Z" & i).Value
Sheets("PHP").Range("Q" & i).NumberFormat = "0.00"
Sheets("PHP").Range("R" & i).FormulaR1C1 = "=Text(RC[-1],""0,00"")"
Sheets("PHP").Range("R" & i).Copy
Sheets("PHP").Range("R" & i).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Sheets("PHP").Range("Q" & i).ClearContents
Sheets("PHP").Range("R" & i).Replace What:=",", Replacement:=".", LookAt:=xlPart, _
MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Mit Suchen/Ersetzen klappt die Umwandlung, nur nicht in VBA.
Gruß
Joachim
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen-ersetzen VBA
11.03.2019 11:18:05
Daniel
Hi
das Problem ist die automatische Typumwandlung, die nach einem Replace automatisch ausgeführt wird und das das ganze von VBA gemacht wird, von Zahlen im amerikanischen Format ausgeht, dh der Wert "301.78" wird als Zahl erkannt und dann in eine solche gewandelt und erscheint damit in einem deutschen Excel wieder als Kommazahl (weils ja ne Zahl ist)
machst du das ganze von Hand, gelten die deutschen Regeln und es wird die 301,78 als Zahl erkannt.
du solltest hier den Tausch von Komma durch Punkt schon in der Excelformel machen (mit Wechseln / Substitute) und auf das anschließende Replace verzichten:
eigentlich sollte dir dieser Code reichen, den zwischenschritt über Spalte Q brauchst du nicht, weil du ja auch in der Formel direkt auf Spalte 26 zugreifen kannst:
Sheets("PHP").Range("R" & i).FormulaR1C1 = "=Substitute(Text(RC26,""0.00""),"","",""."")"
Sheets("PHP").Range("R" & i).Copy
Sheets("PHP").Range("R" & i).PasteSpecial xlPasteValues
Application.CutCopyMode = False
ich kenne den restlichen Code nicht, aber das "i" lässt auf eine For-Next-Schleife schließen, mit der du einen größeren Zellbereich bearbeitest. Dieses ist hier nicht notwendig, du kannst hiermit alle Zellen gemeinsam bearbeiten:
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige