Runden mit VBA vs. Rundungsfunktion in Excel

Bild

Betrifft: Runden mit VBA vs. Rundungsfunktion in Excel von: Bernd S.
Geschrieben am: 14.02.2005 15:16:19

Hallo Spezialisten,

ich möchte Euro-Werte (Ganze Zahlen) in Tausend-Euro-Werte per VBA umrechnen. Dabei ergeben sich Rundungsprobleme. VBA rundet anders als die übliche Funktion "Runden(Zahl;Anzahl_Stellen)".

(Auszug aus dem Code)
...
For Each cell In Selection
cell.Value = Round(cell.Value, 0)
Next
...

VBA-Ergebnisse:
102.500 = 102 (falsch)
105.500 = 105 (korrekt)
110.500 = 110 (falsch)

Hat jemand einen Tipp ?

Danke und Gruß
Bernd

Bild


Betrifft: AW: Runden mit VBA vs. Rundungsfunktion in Excel von: Ute
Geschrieben am: 14.02.2005 15:19:03

versuchs mal so:

For Each cell In Selection
cell.Value = application.Round(cell.Value, 0)
Next

Ute


Bild


Betrifft: AW: Runden mit VBA vs. Rundungsfunktion in Excel von: Bernd S.
Geschrieben am: 14.02.2005 15:21:50

sorry, habe mich beim zweiten Ergebnis vertippt (VBA-Ergebnis = 106 bzw. korrekt)


Bild


Betrifft: AW: Runden mit VBA vs. Rundungsfunktion in Excel von: Galenzo
Geschrieben am: 14.02.2005 15:25:04

[b1]=Worksheetfunction.Ceiling([a1],1000)

entspricht der Funktiono =OBERGRENZE(..


Bild


Betrifft: AW: Runden mit VBA vs. Rundungsfunktion in Excel von: Bernd S.
Geschrieben am: 14.02.2005 15:57:54

Vielen Dank an euch für die schnellen Tipps.
Das Problem liegt darin, dass die VBA-Vorgabe mathematisch rundet und die Excel-Funktion kaufmännisch. Application.round rundet leider anders als die normale Excel-Funktion.

Ich hab jetzt aber eine Lösung gefunden (mir ist das mal im Rahmen der Euro-Umstellung über den Weg gelaufen):
Public
Function Round(ByVal Number As Double, ByVal digits As Integer) As Double
Round = Int(Number * 10 ^ digits + 0.5) / 10 ^ digits
End Function


dies im Modul vorangestellt und dann gehts.

Gruß
Bernd


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Runden mit VBA vs. Rundungsfunktion in Excel"