Replace Befehl im Makro

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Replace Befehl im Makro
von: Robert
Geschrieben am: 09.11.2015 10:03:16

Hallo,
ich habe bei folgender Aufgabe ein Problem:
In einer Tabelle werden Daten aus einer txt Datei eingelesen. Grundsätzlich sind Werte wie "34,345 €" enthalten, welche auch problemlos von Excel als Zahl mit der entsprechenden Formatierung erkannt werden. Manchmal enthalten die Daten jedoch noch eine weitere Angabe und sehen dann folgendermaßen aus "34,345 € g".
In Excel selbst kann ich nach " g" suchen und durch "" ersetzen. Alles gut. Nun würde ich das gerne automatisieren.
Verwende ich den Replace Befehl, macht Excel aus "34,345 € g" "34.345,00 €".
Alternativ hätte ich es mit
If Right(Selection, 1) = "g" Then
zeichen = Selection.Characters.Count
Selection = Left(Selection, zeichen - 3)
versucht.
Auch hier erhalte ich das gleiche Ergbnis wie bei Replace.
Fällt Euch eine Lösung ein?
Vielen Dank vorab.
Viele Grüße
Robert

Bild

Betrifft: AW: Replace Befehl im Makro
von: Rudi Maintaire
Geschrieben am: 09.11.2015 10:16:37
Hallo,
bei mir geht das.
msgbox replace("34,345 € g","g","")
Gruß
Rudi

Bild

Betrifft: AW: Replace Befehl im Makro
von: Daniel
Geschrieben am: 09.11.2015 10:49:47
Hi Rudi
es ist klar, das das geht, das ist aber nur die erste Hälfte des Problems.
Teste doch mal vollständig:

Selection.Value =  replace("34,345 € g","g","")

Gruß Daniel

Bild

Betrifft: AW: Replace Befehl im Makro
von: Rudi Maintaire
Geschrieben am: 09.11.2015 10:55:20
Hallo,
OK.
Machen wir ne Zahl daraus.
Selection.Value = replace("34,345 € g","g","")*1
Gruß
Rudi

Bild

Betrifft: AW: Replace Befehl im Makro
von: Daniel
Geschrieben am: 09.11.2015 10:17:53
Hi
ein Replace/Ersetzen ist wie eine Neueingabe des Wertes, welche zur Folge hat, dass Excel erneut prüft, ob der vorliegende Text wie ein Zahl, ein Datum oder eine Formel aussieht und dann den Text entsprechend umwandelt.
Problem an der Sache ist, dass wenn das Replace/Ersetzen von VBA bzw per Makro ausgeführt wird, dann Excel für diese Prüfung immer die englischen Zahlen-, Datums- und Formelschreibweisen anwendet.
Dh dein Komma ist dann das Tausendertrennzeichen.
(machst du das Ersetzen von Hand, wendet Excel für die Prüfung die Schreibweisen der jeweiligen Ländereinstellung an, dh in deinem Fall deutsch.
dh wenn du dieses Ersetzen per VBA ausführen lässt, musst du vorher das Komma durch den Punkt ersezten, damit die Zahl einer englischen Zahl entspricht.
Gruß Daniel

Bild

Betrifft: AW: Replace Befehl im Makro
von: Robert
Geschrieben am: 09.11.2015 11:25:07
Hallo Daniel,
genau dies habe angenommen. Nachdem es scheinbar keine Lösung seitens Excel gibt, habe ich der Einfachheit halber folgenden Code verwendet:
Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Selection.Replace What:=" g", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Vielen Dank an alle!
Viele Grüße
Robert

Bild

Betrifft: AW: Replace Befehl im Makro
von: JoWE
Geschrieben am: 09.11.2015 10:20:45
Hallo Robert,
XL2013: Mit dem Makrorekorder aufgezeichnet:
Cells.Replace What:="g", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Es funktioniert ohne Fehler.
Gruß
Jochen

Bild

Betrifft: AW: Replace Befehl im Makro
von: Robert
Geschrieben am: 09.11.2015 11:12:49
Hallo Jochen,
vielen Dank, aber genau hier tritt bei mir der Fehler immer wieder auf.
VG

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Replace Befehl im Makro"