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
Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge
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