Thema Datum  Von Nutzer Rating
Antwort
09.11.2010 14:52:07 Fredy
NotSolved
09.11.2010 15:28:29 Severus
NotSolved
09.11.2010 15:34:34 Fredy
NotSolved
Blau Aw:Aw:Aw:Komma wird ignoriert
09.11.2010 16:27:04 Severus
NotSolved

Ansicht des Beitrags:
Von:
Severus
Datum:
09.11.2010 16:27:04
Views:
891
Rating: Antwort:
  Ja
Thema:
Aw:Aw:Aw:Komma wird ignoriert
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

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
09.11.2010 14:52:07 Fredy
NotSolved
09.11.2010 15:28:29 Severus
NotSolved
09.11.2010 15:34:34 Fredy
NotSolved
Blau Aw:Aw:Aw:Komma wird ignoriert
09.11.2010 16:27:04 Severus
NotSolved