View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.misc
Horatio J. Bilge, Jr. Horatio J. Bilge, Jr. is offline
external usenet poster
 
Posts: 135
Default Creating a MyIsEven function

That solves the problem of the big numbers, but it introduces other errors.
Here are some samples:

Value MyIsEven ISEVEN
1.2 TRUE FALSE
abc2 TRUE #VALUE!
two FALSE #VALUE!
[blank] FALSE TRUE

"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.