version=1.1.0
vdate=24.08.2016
fname=cast_roundcurr.bas
ns=%NAMESPACE%
fpath=/vba/cast
{{keywords>vba,castfunction}}
====== [VBA] roundCurr() ======
//Mit der Funktion roundCast() kann man schnell und einfach Währungsrundungen durchführen. Klassisches Beispiel ist die 5-Rappen-Rundung in der Schweiz. Auch andere Rundungen mit einer Genaugkeit lasen sich druchführen.
//
==Version %%version%% - %%vdate%%==
{{%%fname%%|Download %%fname%% (V-%%version%%)}}
===== Definition =====
roundedValue = roundCurr(value, precision [,roundType])roundCurr(ByVal iValue As Double, ByVal iPrecision As Double, Optional ByVal iRoundType As rcRoundType = rcRound) As Double
***iValue** Wert der gerundet werde soll
***iPrecision** Genauigkeit. Achtung: Ist nicht die Anzahl Nachkommastellen. Auf ganze Zahlen Runden ist also nicht 0 sondern 1 (siehe Beispiele)
***iRoundType** Art wie gerundet werden soll. Siehe Enum rcRoundType
==== Enum rcRoundType ====
'/**
' * Type, wie die Funktion roundCurr() arbeiten soll. Normal runden, Aufrunden, Abrunden
' */
Public Enum rcRoundType
rcRound '0 Normal runden roundCurr(3.6, 0.5) = 3.5
rcHalfDown '1 Alias zu normal. 0.5 wird abgerundet roundCurr(3.25, 0.5, rcHalfDown) = 3
rcHalfUp '2 Ab der Hälfte aufrunden roundCurr(3.25, 0.5, rcHalfUp) = 3.5
rcDowwn '3 immer abrunden roundCurr(3.4, 0.5, rcDowwn) = 3
rcUp '4 immer aufrunden roundCurr(3.1, 0.5, rcUp) = 3.5
End Enum
==== Beispiele ====
> Für die Ausgabe der Resultate verwendete ich die Funktion [[:vba:functions:print_r:]].
'auf 5 Rappen genau: .12 wird abgerundet
d roundCurr(123.12, 0.05)
123.1
'auf 5 Rappen genau: .13 wird aufgerundet
d roundCurr(123.13, 0.05)
123.15
'auf 1 Franken runden
d roundCurr(123.13, 1)
123
'auf 25 Rappen runden
d roundCurr(123.13, 0.25)
123.25
'auf 50 Franken runden
d roundCurr(123.13, 50)
100
Auf/Abrunden
'Normal runden
d roundCurr(3.6, 0.5)
3.5
'Alias zu normal. 0.5 wird abgerundet
d roundCurr(3.25, 0.5, rcHalfDown)
3
'Ab der Hälfte aufrunden
d roundCurr(3.25, 0.5, rcHalfUp)
3.5
'immer abrunden
d roundCurr(3.4, 0.5, rcDowwn)
3
'immer aufrunden
d roundCurr(3.1, 0.5, rcUp)
3.5
===== Code =====
Code zum importieren. Wenn er mit C&P in ein neus Modul eingefügt wird, dann muss die Zeile ''Attribute VB_Name = "cast_roundCurr"'' entfernt werden.