Private Sub Form_Load()
'Fill combos with dates, months
For x = 1 To 12
cboMonth.AddItem x
Next
For x = 1 To 31
cboDate.AddItem x
Next
cboDate.ListIndex = 0
cboMonth.ListIndex = 0
End Sub
Private Sub cmdProfile_Click()
Dim Message As String
Dim StudentAge As Integer
Dim StudentDate As Date
Dim Grade As String
'DateSerial will produce date and not create an
'error for wrong dates so 29/2/1997 becomes 1/3/1997
StudentDate = DateSerial(txtyear.Text, cboMonth.Text, cboDate.Text)
If IsDate(StudentDate) Then
'Your code for age
StudentAge = DateDiff("yyyy", StudentDate, Now())
'Changed these to Month() and Day() in case Dateserial modifies date
If Month(Now) < Month(StudentDate) Then
StudentAge = StudentAge - 1
ElseIf Month(Now) = Month(StudentDate) Then
If Day(Now) < Day(StudentDate) Then
StudentAge = StudentAge - 1
End If
End If
Else
MsgBox "Please enter valid date"
Exit Sub
End If
'I changed this to a textbox so that u can change
Select Case txtGrade.Text 'Select case is easier to follow for multi ifs
Case "1": Grade = "first"
Case "2": Grade = "second"
Case "3": Grade = "third"
Case "4": Grade = "fourth"
Case "5": Grade = "fifth"
Case "6": Grade = "sixth"
Case Else: Grade = "far too old"
End Select
'Convert name to proper case eg john becomes John
Message = StrConv(txtName.Text, vbProperCase) & " is a student in the " & Grade & " grade. "
If optMale.Value = True Then
Message = Message & "He is " & StudentAge & " Years Old"
Else
Message = Message & "She is " & StudentAge & " Years Old"
End If
MsgBox Message, vbOKOnly, "Student Profile"
End Sub