Creating a MyIsEven function
Good point, INT rounds the 'wrong' way for your purposes
Mike
"Horatio J. Bilge, Jr." wrote:
That works on all of my samples, except for negative decimals. I changed it to:
s = Fix(r.Value) and it seems to work great.
Thanks!
"Mike H" wrote:
To emulate the ATP ISEVEN then the value needs to be truncated
s = Int(r.Value)
Mike
"Gary''s Student" wrote:
Make the argument a string rather than a number:
Function MyIsEven(r As Range) As Boolean
Dim s As String
s = r.Value
Select Case Right(s, 1)
Case 0, 2, 4, 6, 8
MyIsEven = True
Case Else
MyIsEven = False
End Select
End Function
--
Gary''s Student - gsnu200908
"Horatio J. Bilge, Jr." wrote:
I have a workbook that uses the ISEVEN function. Since some people who use
the workbook may not have ATP installed, I decided to try writing my own
MyIsEven function. It gives the same result as ISEVEN on all of the test
entries I tried, except for numbers greater than 2,147,483,647.
Function MyIsEven(Num As Long) As Boolean
Select Case Right (Num, 1)
Case 0, 2, 4, 6, 8
MyIsEven = True
Case Else
MyIsEven = False
End Select
End Function
I thought of adding an If statement to deal with the large numbers, but it
didn't make any difference:
If Num 2147483647 Then
Num = Num - 2147483646
End If
I also thought of using MyIsEven(Num As Double), but that introduces
different errors.
For my workbook, what I have will work fine, but I thought I would try to be
as thorough as possible.
|