VBA - Zahlen vergleichen

  • Hallo,
    ich habe ein Problem.
    Und zwar habe ich ein größeres Kassabuch-Programm mit VBA geschrieben und eine Funktion davon ist, dass man einen Geldbetrag auf mehrere Personen aufteilen kann. Dazu wird zuerst eingegeben welche Scheine und Münzen ausgezahlt und/oder eingezahlt werden. Danach wählt man noch die gewünschten Kunden aus und schreibt in die Textbox neben ihnen den Betrag ihrer Buchung.
    Also z.B. Zahlen ich einen 5€ Schein aus und Herr X hat eine Buchung von -2€ und Herr Y eine Buchung von -3€

    Also Kontrolle soll nun verglichen werden, ob die Eingaben stimmen. Dazu berechne ich den Betrag der Münzen und den Betrag der in den Textboxen steht und vergleiche diesen.

    Der Betrag der Münzen wird bei jeder Änderung berechnet und in FormMehrfachbuchungen.txtein und FormMehrfachbuchungen.txtaus geschrieben.

    Daher berechne ich die Summe einfach:
    summekassa = FormMehrfachbuchungen.txtein.text - FormMehrfachbuchungen.txtaus.text

    Die Summe der Textboxen berechne ich so:
    With FormMehrfachbuchungen
    summe1 = Val(Replace(.TextBox1, ",", ".")) + Val(Replace(.TextBox2, ",", ".")) + Val(Replace(.TextBox3, ",", ".")) + Val(Replace(.TextBox4, ",", ".")) + Val(.TextBox5) + Val(Replace(.TextBox6, ",", ".")) .....
    End With

    Und dann halt .... If summe1 = summekassa Then ......

    summe1 und summekassa sind als Double deffiniert.

    Naja das Funtkioniert auch meistens, aber wenn ich z.B. -6,48 ausbuchen will, berechnet er zwar für beide -6,48 sagt meint aber, dass die Zahlen nicht übereinstimmen. Es gibt auch falsche Kombinationen die als Richtig erkannt werden.

    Naja ich hab keine Ahnung woran das liegen könnte.
    Ich hoffe es kann mir jemand helfen.
    lg
    Freaky

  • Wenn du sagst, dass es manchmal funktioniert und manchmal nicht, vermute ich, dass es an den Gleitkommawerten liegt. Vergleiche mit Gleichkommazahlen sind IMMER und überall böse. Das liegt an der Ungenauigkeit, die bei ihrer Berechnung auftritt.

    Am Besten, du rundest die Werte vor dem Vergleich oder steigst auf ganze Zahlen um.
    (Aber das ist nur eine Vermutung)

    Something big is coming. And there will be pirates and ninjas and unicorns...