# Finding 18 and older

I need to Exit the Sub if the Birthdate of a person is 18 and over.  Can someone provide me with code to put on an Exit event?
###### Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Commented:

try sumthing like this...

Sub checkYear(bDate As Date)

If (Year(Now) - Year(bDate)) >= 18 Then
MsgBox "more than 18 years old"
exit sub
End If

End Sub

game-master
0
RetiredCommented:
I think that this function will be a bit more accurate
``````Sub Something()
'...
If IsOver18(TheDate) then
Exit Sub
end if
end sub

Function IsOver18(Birthdate As Date) As Boolean
Dim BirthdayThisYear As Date
Dim iYears As Integer

iYears = DateDiff("yyyy", Birthdate, Now)
If Now < BirthdayThisYear Then
iYears = iYears - 1
End If
If iYears >= 18 Then
IsOver18 = True
End If
End Function
``````
0

Experts Exchange Solution brought to you by

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Commented:
I could be wrong, but do you really need/want that 'BirthdayThisYear' logic?  I think the DateDiff function would take care of that (It seems that you would only need the 'BirthdayThisYear' logic with something like the solution game-master provided.)
0
RetiredCommented:
everkleer,

The conventional meaning of 'Are you a certain age?' generally means 'How many whole years have passed up until your last birthday?'. Simply year VB calculations do not give that answer. DateDiff just gives you the difference between the respective years and could make one appear a year older than the convention says. At my age, that is an important difference; at least it was, for this and any other year, up until my birthday on the 20th March.
0
Commented:
Oh I see.  So is the DateDiff function alone without your added logic basically doing the same thing as the other guy suggested (Year(Now) - Year(bDate))?  I assumed the function would perform the extra logic of calculating whether the birthday had occurred yet this year.  Looks like your birthday is 3 days after mine but you are obviously older & wiser than me!
0
###### It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic Classic

From novice to tech pro — start learning today.