Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

VBA - String in Zahl umwandeln funktioniert nicht

Jürgen124 / 8 Antworten / Flachansicht Nickles

Hallo Leute, ich glaubs gar nicht! Will einfach nur nen kleinen String in ne Zahl umwandeln und es funktioniert nicht!!!!

Dim Zahl as Double

Zahl=Val("1,50")
msgbox "Ergebnis: "+Zahl ' Gibt Ergebnis: 1 aus!!!

Val() sollte eine Double-Zahl, also mit Nachkommaanteil ausgeben tut es aber nicht sondern gibt nur den Ganzzahlanteil aus.

Was zum Donnerwetter mach ich denn da Falsch?

Gruß
Jürgen

bei Antwort benachrichtigen
CDbl ? PaoloP
Jürgen124 Nachtrag zu: „Danke Leute - es lag wie ihr richtig vermutet habt am . bzw. , - habe eine...“
Optionen

Sorry, habe zwischendurch nicht mehr in meinen Beitrag reingeschaut, aber falls doch noch jemand reinliest hier die Ersatzfunktion(en):

Public Function neuVal(ByVal sValue As String) As Double
Dim sChar As String

' Dezimaltrennzeichen durch ! ersetzen
sValue = Replace(sValue, GetDecimalChar(), "!")

' Tausendertrennzeichen ausfiltern
sChar = GetThousandGroupDigit()
If Len(sChar) > 0 Then
sValue = Replace(sValue, sChar, "")
End If

' evtl. nachstehende "Nicht-Ziffern"-Zeichen entfernen
While InStr("0123456789!", Right$(sValue, 1)) = 0 And Len(sValue) > 0
sValue = Left$(sValue, Len(sValue) - 1)
Wend

' ! durch . ersetzen, damit die VBA.Val-Funktion
' den korrekten Wert zurückliefert
neuVal = VBA.Val(Replace(sValue, "!", "."))
End Function

' Dezimalzeichen ermitteln
Public Function GetDecimalChar() As String
GetDecimalChar = Mid$(CStr(1.5), 2, 1)
End Function

' Tausender-Trennzeichen ermitteln
Public Function GetThousandGroupDigit() As String
Dim sTemp As String
sTemp = Mid$(FormatNumber(1000, 0, , , vbTrue), 2, 1)
If sTemp = "0" Then sTemp = ""

GetThousandGroupDigit = sTemp
End Function

bei Antwort benachrichtigen