|
In vielen Fällen muss die Anzahl angefangener Einheiten ermittelt werden, etwa angebrochene Monate oder Jahre, oder ganzzahlige Währungsbeträge. Dabei ist hier keine mathematische oder kaufmännische Rundung gefragt, bei die Nähe zur unteren oder oberen Grenze einer Einheit den Ausschlag gibt, sondern eine einfache Ermittlung des jeweils nächsthöheren ganzzahligen Wertes.
Wir bedienen uns dabei eines besonderen Effekts der Int-Funktion. Per Definition liefert sie den nächstkleineren ganzzahligen Wert. Bei positiven Werten entspricht das dem offensichtlichen Abschneiden des Nachkommaanteils, während es bei negativen Werten tatsächlich im nächstkleineren ganzzahligen Wert resultiert, der, absolut gesehen, der "größere" ist:
1.5 -> 1
-1.5 -> -2
Bei negativen Werten liefert uns die Int-Funktion somit gleich den gesuchten Wert, während wir bei positiven Werten zuerst dessen Vorzeichen umkehren und anschließend wieder das Vorzeichen des Resultats umkehren müssen.
Public Function NextIntegerInt(ByVal Num As Double) As Integer
Select Case Sgn(Num)
Case 1
NextIntegerInt = Int(Num * -1) * -1
Case -1
NextIntegerInt = Int(Num)
End Select
End Function
Public Function NextIntegerLng(ByVal Num As Double) As Long
Select Case Sgn(Num)
Case 1
NextIntegerLng = Int(Num * -1) * -1
Case -1
NextIntegerLng = Int(Num)
End Select
End Function
Public Function NextIntegerDec(ByVal Num As Variant) As Variant
Select Case Sgn(Num)
Case 1
NextIntegerDec = Int(CDec(Num) * -1) * -1
Case -1
NextIntegerDec = Int(CDec(Num))
End Select
End Function
|