Rückkehr in VBA-Code-Beispiele

VBA-Funktionen Round, RoundUp und RoundDown

VBA-Runden

Die VBA-Rundungsfunktion rundet Zahlen auf eine bestimmte Anzahl von Ziffern.

Syntax der VBA-Rundungsfunktion

Die Syntax der VBA Round-Funktion lautet:

Round(Ausdruck, [Dezimalstellen]) wobei:

  • Ausdruck – Die zu rundende Zahl.
  • Dezimalstellen (Optional) – Eine ganze Zahl, die die Anzahl der zu rundenden Dezimalstellen angibt. Der Wert muss größer als oder gleich 0 sein (>=0). Ist der Wert leer, wird der Standardwert 0 verwendet, d. h. die Funktion rundet auf die nächste Ganzzahl.

Schauen wir uns also ein Beispiel an, damit Sie sehen, wie die VBA-Funktion Round funktioniert, indem sie auf eine Dezimalstelle rundet:

Sub Runden1()

Msgbox Round(7.25, 1)

End Sub

Die resultierende MessageBox:

round1 vba funktion

VBA Runden einer Variablen

Im obigen Beispiel haben wir die zu rundende Zahl direkt in die Funktion eingegeben. Normalerweise rundet man jedoch stattdessen eine Variable. Im Folgenden sehen Sie ein Beispiel, bei dem eine Variable verwendet wird:

Hinweis: Wir verwenden den Variablentyp Double, um dezimale Werte zu speichern.

Sub RundenMitVariablen()

Dim einheitenZaehlung As Double

einheitenZaehlung = 7.25

MsgBox "The value is " & Round(einheitenZaehlung, 1)

End Sub

Das Ergebnis ist:

round2 vba funktion

VBA-Rundungsergebnisse

Tatsächliche Zahl Anzahl der Dezimalstellen Ergebnis
7.25 0 7
7.25 1 7.2
7.25 2 7.25
-7.25 1 -7.2
-7.25 2 -7.25

VBA Zellenwert runden

Sie können einen Zellenwert auch direkt in VBA runden:

Sub ZelleRunden()
Range("A1").Value = Round(Range("A1").Value, 2)
End Sub

VBA-Funktion RoundUp

Angenommen, Sie möchten eine Zahl mit VBA aufrunden. Dazu gibt es keine eingebaute VBA-Rundungsfunktion. Stattdessen können Sie die Excel-Arbeitsblattfunktion RoundUp in Ihrem VBA-Code aufrufen:

AufrundenEinheitenZaehlung = Application.WorksheetFunction.RoundUp(einheitenZaehlung, 3)

Die Arbeitsblattfunktionen von Excel können in VBA mit Hilfe des WorksheetFunction-Objekts verwendet werden . Die einzigen Arbeitsblattfunktionen, die Sie nicht aufrufen können, sind diejenigen, die bereits eine integrierte VBA-Äquivalente haben.

Eine Erinnerung an die Syntax der Excel-RoundUp-Arbeitsblattfunktion: ROUNDUP(Zahl, Ziffern) wobei:

  • Zahl – Die Zahl, die Sie aufrunden möchten.
  • Ziffern – Die Anzahl der Stellen, auf die Sie die Zahl runden möchten.

Schauen wir uns also ein Beispiel an, damit Sie sehen können, wie Sie in Ihrem VBA-Code auf die Arbeitsblattfunktion RoundUp zugreifen können:

Sub Aufrunden()

Dim einheitenZaehlung As Double

Dim AufrundenEinheitenZaehlung As Double

einheitenZaehlung = 7.075711

AufrundenEinheitenZaehlung = Application.WorksheetFunction.RoundUp(einheitenZaehlung, 4)

MsgBox "The value is " & AufrundenEinheitenZaehlung

End Sub

Das Ergebnis ist:

aufrunden vier dezimalstellen

 

Aufrunden auf die nächsthöhere Ganzzahl

Sie können auf die nächste ganze Zahl aufrunden, indem Sie 0 als Anzahl der Dezimalstellen angeben:

Sub AufrundenGanzzahl()

MsgBox Application.WorksheetFunction.RoundUp(7.1, 0)

End Sub

Das Ergebnis liefert:

roundup funktion ganzzahl

RoundUp Funktion Ergebnisse

Tatsächliche Zahl Ziffern Ergebnis
7.075711 0 8
7.075711 1 7.1
7.075711 2 7.08
7.075711 3 7.076
7.075711 -1 10
7.075711 -2 100
7.075711 -3 1000

VBA-Funktion RoundDown

Nehmen wir an, Sie möchten eine Zahl mit VBA abrunden. Auch hier gibt es keine eingebaute VBA-Abrundungsfunktion. Stattdessen müssen Sie die Excel-Arbeitsblattfunktion RoundDown in Ihrem VBA-Code aufrufen.

Eine Erinnerung an die Syntax der Excel-Arbeitsblattfunktion RoundDown: ROUNDDOWN(Zahl, Ziffern) wobei:

  • Zahl – Die Zahl, die Sie abrunden möchten.
  • Stellen – Die Anzahl der Stellen, auf die Sie die Zahl abrunden möchten.

Schauen wir uns also ein Beispiel an, damit Sie sehen, wie Sie in Ihrem VBA-Code auf die Arbeitsblattfunktion RoundDown zugreifen können:

Sub Abrunden()

Dim einheitenZaehlung As Double

Dim abrundenEinheitenZaehlung As Double

einheitenZaehlung = 5.225193

abrundenEinheitenZaehlung = Application.WorksheetFunction.RoundDown(einheitenZaehlung, 4)

MsgBox "The value is " & abrundenEinheitenZaehlung

End Sub

Das Ergebnis ist:

rounddown funktion vba

Abrunden auf die nächste Ganzzahl

Sie können auf die nächste Ganzzahl abrunden, indem Sie 0 als Anzahl der Dezimalstellen angeben:

Sub AbrundenGanzzahl()

MsgBox Application.WorksheetFunction.RoundDown(7.8, 0)

End Sub

Das Ergebnis ist:

rounddown funktion ganzzahl

RoundDown Funktion Ergebnisse

Tatsächliche Zahl Ziffern Ergebnis
5.225193 0 5
5.225193 1 5.2
5.225193 2 5.22
5.225193 3 5.225
5.225193 -1 0
5.225193 -2 0
5.225193 -3 0

Andere VBA-Rundungsfunktionen

VBA Ceiling – Aufrunden auf eine angegebene Signifikanz

Wenn Sie also eine Zahl auf die nächste Ganzzahl oder auf das nächste angegebene Vielfache der Signifikanz aufrunden möchten, können Sie die Excel-Arbeitsblattfunktion Ceiling.Math in Ihrem VBA-Code aufrufen.

Eine Erinnerung an die Syntax der Excel-Arbeitsblattfunktion Ceiling.Math:

CEILING.MATH(Zahl, [Signifikanz], [Modus]) wobei:

  • Zahl – Die Zahl, die Sie aufrunden möchten.
  • Signifikanz (Optional) – Das Vielfache, auf das die Zahl gerundet werden soll.
  • Modus (Optional) – Legt fest, ob negative Zahlen auf Null oder von Null weg gerundet werden sollen.

Schauen wir uns also ein Beispiel an, damit Sie sehen können, wie Sie in Ihrem VBA-Code auf die Arbeitsblattfunktion Ceiling.Math zugreifen können:

Sub AbrundenBisSignifikanz()

Dim einheitenZaehlung As Double

Dim ceilingmathEinheitenZaehlung As Double

einheitenZaehlung = 4.1221 

ceilingmathEinheitenZaehlung = Application.WorksheetFunction.Ceiling_Math(einheitenZaehlung, 5)

MsgBox "The value is " & ceilingmathEinheitenZaehlung

End Sub

Das Ergebnis ist:

aufbrunden bis signifikanz

VBA RoundUp auf angegebene Signifikanz Ergebnisse

Tatsächliche Zahl Signifikanz Modus Ergebnis
4.1221 5
4.1221 3 6
4.1221 50 50
-4.1221 3 -3
-4.1221 3 -1 -6

VBA Floor – Abrunden auf eine angegebene Signifikanz

In VBA gibt es auch keine entsprechende Floor.Math-Funktion. Aber auch hier gilt: Wenn Sie eine Zahl auf die nächste Ganzzahl oder auf das nächste angegebene Vielfache der Signifikanz abrunden möchten, können Sie die Excel-Arbeitsblattfunktion Floor.Math von VBA aus aufrufen.

Eine Erinnerung an die Syntax der Excel-Arbeitsblattfunktion Floor.Math:

FLOOR.MATH(Zahl, [Signifikanz], [Modus]) wobei:

  • Zahl – Die Zahl, die Sie abrunden möchten.
  • Signifikanz (Optional) – Das Vielfache, auf das die Zahl gerundet werden soll.
  • Modus (Optional) – Legt fest, ob negative Zahlen auf Null oder von Null weg gerundet werden sollen.

Schauen wir uns also ein Beispiel an, damit Sie sehen, wie Sie in Ihrem VBA-Code auf die Arbeitsblattfunktion Floor.Math zugreifen können:

Sub AbrundenBisSignifikanz()

Dim einheitenZaehlung As Double
Dim floormathEinheitenZaehlung As Double

einheitenZaehlung = 4.55555559
floormathEinheitenZaehlung = Application.WorksheetFunction.Floor_Math(einheitenZaehlung, 2)

MsgBox "The value is " & floormathEinheitenZaehlung

End Sub

Das Ergebnis ist:

abbrunden bis signifikanz

VBA RoundDown auf angegebene Signifikanz Ergebnisse

Tatsächliche Zahl Signifikanz Modus Ergebnis
4.55555559 4
4.55555559 3 3
4.55555559 50 0
-4.55555559 3 -6
-4.55555559 3 -1 -3