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     |