Olá Kaynan,
O código funfa perfeitamente dessa maneira:
Function CalculaIdade(DataNascimento As Date) As Long
On Error Resume Next 'Tratamento de erro para eliminar o aviso de erro por falha na compilação
If IsNull(DataNascimento) Then
CalculaIdade = ""
Exit Function
End If
Dim intAnos As Integer, intMeses As Integer, intDias As Integer
Dim AnoHoje As Date, DiaHoje As Date, MesHoje As Date 'Tipos corretos para esses dados
Dim DiaNasc As Date, MesNasc As Date, AnoNasc As Date 'Tipos corretos para esses dados
Dim DataAux As Date
DiaHoje = Day(Date)
MesHoje = Month(Date)
AnoHoje = Year(Date)
DiaNasc = Day(DataNascimento)
MesNasc = Month(DataNascimento)
AnoNasc = Year(DataNascimento)
intAnos = AnoHoje - AnoNasc
If MesHoje = MesNasc Then
If DiaHoje < DiaNasc Then
intAnos = intAnos - 1
intMeses = 11
DataAux = DateAdd("m", -1, DateValue(DiaNasc & "/" & MesHoje & "/" & AnoHoje))
intDias = Int(Date - DataAux)
ElseIf DiaHoje = DiaNasc Then
intMeses = 0
intDias = 0
Else
intMeses = 0
intDias = Int(Date - DateValue(DiaNasc & "/" & MesHoje & "/" & AnoHoje))
End If
ElseIf MesHoje < MesNasc Then
intAnos = intAnos - 1
If DiaNasc = 29 And MesNasc = 2 Then
intMeses = CInt(DateDiff("m", DateValue(DiaNasc - 1 & "/" & MesNasc & "/" & AnoHoje - 1), Date)) 'Conversão para tipo Integer
Else
intMeses = CInt(DateDiff("m", DateValue(DiaNasc & "/" & MesNasc & "/" & AnoHoje - 1), Date)) 'Conversão para tipo Integer
End If
If DiaHoje = DiaNasc Then
intDias = 0
ElseIf DiaHoje < DiaNasc Then
intMeses = intMeses - 1
DataAux = DateAdd("m", -1, DateValue((DiaNasc - 1) & "/" & MesHoje & "/" & AnoHoje))
intDias = Int(Date - DataAux)
Else
intDias = Int(Date - DateValue(DiaNasc & "/" & MesHoje & "/" & AnoHoje))
End If
Else
intMeses = DateDiff("m", DateValue(MesNasc & "/" & AnoHoje), Date)
If DiaHoje = DiaNasc Then
intDias = 0
ElseIf DiaHoje < DiaNasc Then
intMeses = intMeses - 1
DataAux = DateAdd("m", -1, DateValue(DiaNasc & "/" & MesHoje & "/" & AnoHoje))
intDias = Int(Date - DataAux)
Else
intDias = Int(Date - DateValue(DiaNasc & "/" & MesHoje & "/" & AnoHoje))
End If
End If
CalculaIdade = intAnos
CalculaIdade_Fim:
Exit Function
End Function