Solved

# Finding 18 and older

Posted on 2009-07-13
138 Views
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?
0
Question by:al4629740
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• Learn & ask questions
• 2
• 2

LVL 13

Expert Comment

ID: 24846429

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

LVL 76

Accepted Solution

GrahamSkan earned 250 total points
ID: 24848398
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)
BirthdayThisYear = DateAdd("yyyy", iYears, Birthdate)
If Now < BirthdayThisYear Then
iYears = iYears - 1
End If
If iYears >= 18 Then
IsOver18 = True
End If
End Function
``````
0

LVL 2

Expert Comment

ID: 24851872
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

LVL 76

Expert Comment

ID: 24854197
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

LVL 2

Expert Comment

ID: 24854286
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

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…

#### 762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.