VBA Zahlenkonvertierung

05/01/2016 - 17:40 von Jürgen Stadermann | Report spam
Hallo und ein gutes neues Jahr an Alle.

Lànger ist es nun schon her, als ich hier mal meine Frage(en) gestellte.

Nun zeigte sich in meinem VBA plötzlich ein Fehler.

Also:

Variable:
Dim kassensaldovorher As Double

Abfrage:
kassensaldovorher = Zelle.Offset(3, 4)

If kassensaldovorher - CDbl(TextBox3.Text) < 0 Then
wirdminus = MsgBox("Kassenbarbestand geht
durch diese Buchung ins Minus." + Chr(13) + _
"Das ist unlogisch. der Vorgang wird
abgebrochen.", 64, "KASSENBARBESTAND UNLOGISCH IM MINUS!")
GoTo ende
End If

Voreinstellung:
Die Zelle ist als Zahl formatiert.
Oder als Wàhrung (ohne Symbol) formatiert.

Problem:
Bei der VBA-Abfrage, wird bei einem Betrag von 6,20
6,19999999999993 angezeigt und übernommen.

Das gibt bei der Abfrage im Ergebnis den Wert kleiner Null (< 0).

Mein Versuch:
Ich habe schon Zelle.Offset(3, 4) als CDbl(Zelle.Offset(3, 4)) geschrieben.
Doch das klappt nicht.



Ich benötige:

Wenn in der Zelle z.Bsp. 6,20 steht oder 6,19 steht, dann muss diese
sichtbare Zahl für die Abfrage b.z.w. den Vergleich relevant sein.
Also keine (von Excel) angepasste Genauigkeit.
(Textformatierung kommt natürlich nicht in Frage)



Ich bin kein Experte. Nehme aber für mich in Anspruch ein erfahrener
Laie zu sein.
Vieles finde ich nach dem Motto: Versuch und Irrtum, etc ... .

Danke für Eure baldige Hilfe.
Jürgen
 

Lesen sie die antworten

#1 Claus Busch
05/01/2016 - 17:47 | Warnen spam
Hallo Jürgen,

Am Tue, 5 Jan 2016 17:40:49 +0100 schrieb Jürgen Stadermann:

Problem:
Bei der VBA-Abfrage, wird bei einem Betrag von 6,20
6,19999999999993 angezeigt und übernommen.



das sind die Probleme der Fließkomma-Berechnung.
Abhilfe schafft hier eigentlich nur RUNDEN

kassensaldovorher = Round(Zelle.Offset(3, 4), 2)


Mit freundlichen Grüßen
Claus
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional

Ähnliche fragen