Unerwünschtes Runden

25/01/2010 - 11:18 von Marion Scheffels | Report spam
Hi @all!

Um nicht selber andauernd nachrechnen zu müssen, habe ich ein kleines
Makro geschrieben, das den zu addierenden Wert abfragt und zum Wert der
markierten Zelle addiert.
Das können ganze Zahlen sein, oder mit zwei oder drei Stellen nach dem
Komma.
An irgendeiner Stelle kommt aber mindestens eine unerwünschte Rundung
ins Spiel.


Dim wert As Integer
Dim add As Integer
wert = ActiveCell.Value
add = Application.InputBox _
("Was soll addiert werden?", , "0")
If add = 0 Then Exit Sub
wert = wert + add
ActiveCell.Value = wert



Bei 4,80 + 1,50 kommen z.B. 7,00 raus.
4,8+1,5 wàren 6,3, was zu 6 gerundet werden sollte; würden die 1,5
gerundet, wàren es 6,8 - gerundet 7. Also zweimal?

Wo habe ich da einen Fehler eingebaut? Hoffentlich doch nicht wieder so
eine Windows-Unerklàrlichkeit wie letztens 8-)

Excel 2000 (9.0.2812) auf Windows 2000.

Vielen Dank im Voraus,
MarionS
einwegadresse0@marions.de

"Darf ich Ihnen unseren Zehnerpack anbieten?"
"Wieviel sind denn da drin?"
 

Lesen sie die antworten

#1 Peter Schleif
25/01/2010 - 12:29 | Warnen spam
Marion Scheffels schrieb am 25.01.2010 11:18 Uhr:

Um nicht selber andauernd nachrechnen zu müssen, habe ich ein kleines
Makro geschrieben, das den zu addierenden Wert abfragt und zum Wert der
markierten Zelle addiert.
Das können ganze Zahlen sein, oder mit zwei oder drei Stellen nach dem
Komma.
An irgendeiner Stelle kommt aber mindestens eine unerwünschte Rundung
ins Spiel.



Du hast beide Variablen als Integer deklariert. Dadurch werden beide
Werte schon vor der Addition _implizit_ gerundet. In beiden Fàllen
aufgerundet. Du kannst es leicht durch eine Ausgabe überprüfen:

MsgBox wert & vbCr & add

Vorschlag: Deklariere beide Variablen als Double und runde erst nach der
Addtition:

Sub Runden()
Dim wert As Double
Dim add As Double

wert = ActiveCell.Value
add = Application.InputBox("Was soll addiert werden?", , "0")
If add = 0 Then Exit Sub
wert = wert + add
ActiveCell.Value = Round(wert)
End Sub

Peter

Ähnliche fragen