Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

VBA - String in Zahl umwandeln funktioniert nicht

Jürgen124 / 8 Antworten / Baumansicht 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
Michael Nickles Jürgen124 „VBA - String in Zahl umwandeln funktioniert nicht“
Optionen

Er verschluckt sich am "Komma" - Val("1.50") geht.
Grüße,
Mike

bei Antwort benachrichtigen
ChrE Michael Nickles „Er verschluckt sich am Komma - Val 1.50 geht. Grüße, Mike“
Optionen

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

bei Antwort benachrichtigen
neanderix ChrE „Hallo! Ja, die Umstellung von Excel auf VBA kann manchmal ganz schön grausam...“
Optionen

Luftcode:

Dim ZText As String

Dim Zahl as Double

ZText="1,50"

Replace(ZText,",",".")

Zahl=Val(ZText)



Volker

Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen
Jürgen124 neanderix „Luftcode: Dim ZText As String Dim Zahl as Double ZText 1,50 Replace ZText, , , ....“
Optionen

Danke Leute - es lag wie ihr richtig vermutet habt am "." bzw. "," - habe eine Ersatzfunktion gefunden für die das kein Problem ist!

bei Antwort benachrichtigen
neanderix Jürgen124 „Danke Leute - es lag wie ihr richtig vermutet habt am . bzw. , - habe eine...“
Optionen

Und diese funktion wäre?

Volker

Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen
ChrE neanderix „Und diese funktion wäre? Volker“
Optionen

Psst... der Patentantrag läuft schon.

Gruss

ChrE

bei Antwort benachrichtigen
PaoloP neanderix „Und diese funktion wäre? Volker“
Optionen

CDbl() ?

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
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