This should help.
Public Function GetAgeString(StartDate As Variant, EndDate As Variant) As
String
Dim Years As Integer
Dim Months As Integer
Dim Days As Integer
Dim tDate As Date
If Not (VarType(StartDate) = vbDate And VarType(EndDate) = vbDate) _
Or StartDate > EndDate Then
GetAgeString = ""
Exit Function
End If
Years = AgeYears(StartDate, EndDate)
Months = AgeMonths(StartDate, EndDate)
tDate = DateSerial(Year(StartDate) + Years, Month(StartDate) + Months,
Day(StartDate))
Days = DateDiff("d", tDate, EndDate)
GetAgeString = Years & " yrs " & Months & " mths " & Days & " days"
End Function
Function AgeYears(StartDate As Variant, EndDate As Variant) As Integer
Dim varYears As Variant
If IsNull(StartDate) Or IsNull(EndDate) Then AgeYears = 0: Exit Function
varYears = DateDiff("yyyy", StartDate, EndDate)
If EndDate < DateSerial(Year(EndDate), Month(StartDate), Day(StartDate))
Then
varYears = varYears - 1
End If
AgeYears = CInt(varYears)
End Function
Function AgeMonths(StartDate As Variant, EndDate As Variant) As Integer
Dim tMonths As Double
tMonths = DateDiff("m", StartDate, EndDate)
If (DatePart("d", StartDate) > DatePart("d", EndDate)) Then
tMonths = tMonths - 1
End If
If tMonths < 0 Then
tMonths = tMonths + 1
End If
AgeMonths = CInt(tMonths Mod 12)
End Function
wjs