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.941 Themen, 20.708 Beiträge
Er verschluckt sich am "Komma" - Val("1.50") geht.
Grüße,
Mike
Hallo!
Ja, die Umstellung von Excel auf VBA kann manchmal
ganz schön grausam sein...
Nächste Frage die gestellt wird:
Wie substituiere ich "," durch "." ?
Gruss
ChrE
Luftcode:
Dim ZText As String
Dim Zahl as Double
ZText="1,50"
Replace(ZText,",",".")
Zahl=Val(ZText)
Volker
Danke Leute - es lag wie ihr richtig vermutet habt am "." bzw. "," - habe eine Ersatzfunktion gefunden für die das kein Problem ist!
Und diese funktion wäre?
Volker
Psst... der Patentantrag läuft schon.
Gruss
ChrE
CDbl() ?
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