VBA [basics]: Richtig runden mit VBA

Wer in VBA Zahlen rundet, greift meist zur eingebauten Round-Funktion. Das klingt naheliegend, führt aber regelmäßig zu überraschenden Ergebnissen. Der Grund liegt in einem Rundungsverfahren, das für kaufmännische Zwecke ungeeignet ist. Wir zeigen Dir, wo das Problem liegt und wie Du es mit einer eigenen Funktion zuverlässig löst.

Beispieldatenbank

Die Beispiele dieses Artikels findest Du in der Datenbank VBABasics_RundenMitVBA.accdb.

Runden im Alltag

Runden gehört zu den häufigsten Operationen beim Arbeiten mit Zahlen in kaufmännischen Anwendungen.

Ob Rechnungsbeträge, Steuerberechnungen oder statistische Auswertungen – fast überall müssen Dezimalzahlen auf eine bestimmte Anzahl Nachkommastellen gebracht werden.

In der Schule lernen wir die kaufmännische Rundungsregel: Ist die erste wegfallende Stelle kleiner als 5, wird abgerundet. Ist sie 5 oder größer, wird aufgerundet. Diese Regel ist einfach, eindeutig und für die meisten Anwendungsfälle richtig.

VBA bietet mit Round eine eingebaute Funktion zum Runden. Auf den ersten Blick scheint diese alles zu leisten, was man braucht. Bei näherer Betrachtung offenbart sie jedoch ein Verhalten, das viele Entwickler in die Irre führt.

Die eingebaute Round-Funktion und ihre Tücke

Die Round-Funktion hat folgende Syntax:

Round(Ausdruck, [NachkommaStellenAnzahl])

Der erste Parameter ist die zu rundende Zahl, der zweite die gewünschte Anzahl an Nachkommastellen. Fehlt der zweite Parameter, rundet VBA auf eine ganze Zahl. Ein einfaches Beispiel:

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar