Vba-Lösung um Zahlenformat zu wandeln Punkt Komma
Von 1.000,00 > 1,000.00, also in die englische
Schreibweise.
Ich weiß, das man das mit dem Eingabeschema von Windows
generell einstellen kann. Aber gibt es eine Möglichkeit in
Excel?
Hi Chris,
der Code überwacht automatisch Spalte E (=5te Spalte). Gelangt man dahin so wird die Zelle links davon , also in Spalte D, formatiert.
Alt+F11, dann Auswahl von Tabelle1 oder Modul1 durch Doppelklick, Code einfügen, ggfs die Spalten anpassen durch Anpassung von:
If Target.Column 5 Then Exit Sub
Editor schliessen.
Um dann mit dem formatierten Wert in D rechnen zu können, in Excel
=Wert2(D3)
eingeben.
Achja, Spalte D muss als Text formatiert sein. Bei der Eingabe in D ist nur das Komma erlaubt.
in Tabelle1:
Option Explicit
Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
If Target.Column 5 Then Exit Sub 'A=1,B=2,...,E=5
If Not IsNumeric(Target.Offset(0, -1)) Then Exit Sub ' raus wenn n D keine Zahl
If Target.Offset(0, -1) = "" Then Exit Sub 'raus wenn D leer
If InStr(Target.Offset(0, -1), ".") Then Exit Sub 'raus wenn schon formatiert
Dim teil, n, z
teil = Split(Target.Offset(0, -1).Value, ",")
For n = Len(teil(0)) To 1 Step -1
z = z + 1
If z = 3 Then
teil(0) = Left(teil(0), n - 1) & "," & Mid(teil(0), n)
z = 0
End If
Next n
If Left(teil(0), 1) = "," Then teil(0) = Mid(teil(0), 2)
If UBound(teil) = 1 Then
Target.Offset(0, -1) = teil(0) & "." & teil(1)
Else
Target.Offset(0, -1) = teil(0) & ".00"
End If
End Sub
in Modul1 (wenn nicht vorhanden mit Einfügen–Modul erzeugen)
Option Explicit
Function Wert2(Zelle As Range) As Double
Dim teil, Wert2Text
teil = Split(Zelle.Value, ".")
teil(0) = Replace(teil(0), ",", "")
Wert2Text = teil(0)
If UBound(teil) = 1 Then Wert2Text = Wert2Text & "," & teil(1)
Wert2 = CDbl(Wert2Text)
End Function
Gruß
Reinhard