Fredy schrieb am 09.11.2010 15:34:34:
Severus schrieb am 09.11.2010 15:28:29:
Fredy schrieb am 09.11.2010 14:52:07:
Hallo liebes VBA Forum,
ich habe ein kleines Programm geschrieben, dass zwei Werte aus einer Userform liest und diese mit einander multipliziert. Das klappt soweit auch, allerdings nicht wenn ich Komma zahlen nehme, dann ignoriert der das Komma einfach und rechnet bei z.B: 1,5 * 10 dann mit 15*10.
Gibt es dafür irgend eine Lösung?
Der Code lautet C11 = wert1 * wert2 .
vielen Dank schon einmal.
Grüße
Fredy
VBA ist in Englisch und verwendet die amerikanische Notation. Die Amerikaner verwenden, im Gegensatz zu Europa,
1) den Punkt als Dezimaltrennzeichen
2) das Komma als Tausender-Trennzeichen
Du mußt die Werte also nicht als 1,5 sondern als 1.5 eingeben wenn VBA damir rechnen soll (gilt nicht für die Rechnungen in EXCEL Arbeitsblättern).
Severus
Hallo Severus,
gibt es denn keine Möglichkeit das umzuändern, dass ich hier doch Kommas eingeben kann?
Fredy
Nicht per se.
Du kannst höchstens in Deinem Code das Komma in einen Punkt umwandeln Lassen. Da sähe dann ungefähr so aus:
Sub Irgendwas()
Dim Wert1 as Variant
Dim Wert2 As Variant
Dim KommaPos as Long
Wert1 = Textbox1.Text ' aus der UserForm
Wert2 = Textbox2.Text ' aus der UserForm
If Instr(1, Wert1, ",", vbBinaryCompare) <> 0 Then
KommaPos = Instr(1, Wert1, ",", vbBinaryCompare)
Wert1 = Left(Wert1, Kommapos - 1) & "." & Right(Wert1, Len(Wert1) - Kommapos)
Wert1 = CSng(Wert1)
Else
Wert1 = CSng(Wert1)
End If
If Instr(1, Wert2, ",", vbBinaryCompare) <> 0 Then
KommaPos = Instr(1, Wert2, ",", vbBinaryCompare)
Wert2 = Left(Wert2, Kommapos - 1) & "." & Right(Wert2, Len(Wert2) - Kommapos)
Wert2 = CSng(Wert2)
Else
Wert2 = CSng(Wert2)
End If
Range("C11") = Wert1 * Wert2
End Sub
Severus |