独自のアルゴリズムが必要な場合は、これを試してください。
WSH.Echo CustomRound(-123456.7) '-123457
WSH.Echo CustomRound(-123456.5) '-123456
WSH.Echo CustomRound(-123456.3) '-123456
WSH.Echo CustomRound(123456.7) '123457
WSH.Echo CustomRound(123456.5) '123457
WSH.Echo CustomRound(123456.3) '123456
Function CustomRound(nValue)
CustomRound = Int(nValue + 0.5)
End Function
また...
WSH.Echo CustomRound2(-123456.7) '-123457
WSH.Echo CustomRound2(-123456.5) '-123457
WSH.Echo CustomRound2(-123456.3) '-123456
WSH.Echo CustomRound2(123456.7) '123457
WSH.Echo CustomRound2(123456.5) '123457
WSH.Echo CustomRound2(123456.3) '123456
Function CustomRound2(nValue)
CustomRound2 = Sgn(nValue) * Int(Abs(nValue) + 0.5)
End Function
うーん...もう1つのアイデア:)
Function RoundFrm(nValue)
RoundFrm = Null
If IsEmpty(nValue) Or _
Not IsNumeric(nValue) Then Exit Function
RoundFrm = FormatNumber(nValue, 0)
End Function
そして、上記のアイデアを使用すると、次のようなより完全な機能を作成できます...
Function RoundEx(nValue)
Select Case VarType(nValue)
Case vbInteger, vbLong
RoundEx = nValue
Case vbSingle
RoundEx = CSng(FormatNumber(nValue, 0))
Case vbDouble
RoundEx = CDbl(FormatNumber(nValue, 0))
Case vbCurrency
RoundEx = CCur(FormatNumber(nValue, 0))
Case Else: RoundEx = Null
End Select
End Function