Mit der Replace-Methode des Range-Objektes wirst du hier nicht glücklich werden (das sollte man nur für Text benutzen - nur ist Excel das nicht klar).
Und ja du liegst richtig, es hat was mit den Trennzeichen (Dezimal, Tausender) zu tun. Das Problem ist jedoch auch das bei der Zahl hinten zwei Nullen folgen. Wenn diese nicht sind, tritt der Fehler auch nicht auf. Diese Autoerkennung von Text nach Zahl scheint bei der Nutzung von Replace automatisch die Amerikanische (englische) zu nutzen, wärend man per Hand sicherer fährt - wer weiß was da im Hintergrund abgeht. ;o)
Ist immer eine verzwickte Sache wenn man Excel im Umgang mit Zahlen klar machen will was man möchte. Es gibt hier mehr als genug Lösungsmöglichkeiten (die eine schneller, die andere etwas langsamer).
Hier ist eine davon:
Dim cell As Excel.Range
Dim vntValue As Variant
Set cell = ActiveCell
vntValue = cell.Value
vntValue = Replace(vntValue, ".", "")
vntValue = Replace(vntValue, ",", ".")
vntValue = Replace(vntValue, "EUR", "", Count:=1)
cell.Value = vntValue
Kurz und schmerzlos eben. Du suchst also (wie ich im Code schon erkennen konnte) nach Zellen mit dem Suchmuster "* EUR" und auf diese Zellen wendest du dann den obigen Code an.
PS: Eine andere Möglichkeit wäre bereits beim Import die Zahlen von dem "EUR" zu trennen und dabei für alle Spalten das Format anzugeben.
Gruß
|