Beim amerikanischen Format werden die Tausenderstellen mit Komma abgetrennt und die Dezimalstelle mit Punkt.
Das Konvertieren in das deutsche Format erledigt folgende Funktion:
'Konvertiert amerikanische Zahlen '**** Test **** msgbox "aus " & "25,255.5" & " wird " & VAL("25,255.5") Public Function VAL(sZahl) 'As Double Dim aZahl aZahl = Split(Replace(Replace(sZahl, " ",""), ",", ""), ".") Select Case UBound(aZahl, 1) Case -1 VAL = 0 Case 0 VAL = CDbl(aZahl(0)) Case 1 If Len(aZahl(0)) = 0 Then aZahl(0) = "0" If Len(aZahl(1)) = 0 Then aZahl(1) = "0" VAL = CInt(aZahl(0)) + (CInt(aZahl(1)) / (10 ^ Len(aZahl(1)))) Case Else Dim i Dim lUBound lUBound = UBound(aZahl, 1) sZahl = "" For i = 0 To lUBound - 1 sZahl = sZahl & aZahl(i) Next Val = Cint(sZahl) + (CInt(aZahl(lUBound)) / (10 ^ Len(aZahl(lUBound)))) End Select End Function
Soll nur ein Punkt durch ein Komma ersetzt werden, reicht die REPLACE-Funktion:
msgbox replace ("5.6",".",",")
Wofür sollte man die Funktionen verwenden?:
Schreiben/Lesen von Zahlen, die als Parameter verwendet werden, z. B. in INI-Dateien. Für das Konvertieren von Benutzereingaben sollten weiterhin CDbl und CStr verwendet werden.
Vorgehensweise: