It explains why that is happening in the link you supplied:
If expression is exactly halfway between two possible rounded values, the function returns the possible rounded value whose rightmost digit is an even number
If you want it to always round up when the last digit is 5 you could use a function like this:
Code:
Function user_round(sngNum As Single)
Dim strNum As String
If Right(CStr(sngNum), 1) = "5" Then
strNum = Left(CStr(sngNum), Len(CStr(sngNum)) - 1)
strNum = strNum & "6"
sngNum = CSng(strNum)
End If
user_round = Round(sngNum, 2)
End Function
In this example above and I want to round my value to 2 decimal places
Currently if I use the round function where my result is
2.515 => 2.51
Desired Result
2.515 => 2.52
I saw the explanation where if the value is "odd", it rounds down but "even" it rounds up. So I get why you should watch out when using the ROUND function.
But I want to round up, so using the function above, the code below should resolve my problem correct?
Dim MyVal as double
Dim Cround as double
Dim Prec as integer