Sou usuário do script abaixo. Ele funciona perfeitamente, só que calcula a idade sempre um ano a menos, gostaria que me ajudassem se possível.
Segue abaixo:
Function CalculaIdade(DataNasc As Variant) As Variant
''Recebe a DataNasc e devolve a Idade em Anos
On Error GoTo Idade_Err
''Evita o erro de data não preenchida
If IsNull(DataNasc) Then
CalculaIdade = ""
Exit Function
End If
''Declarando Variáveis
Dim DataHoje As Variant, DiaHoje As Integer
Dim MesNasc As Integer, DiaNasc As Integer
Dim DifAnos As Integer, MesHoje As Integer
''Isola as partes (dia/mês) das duas datas
DiaHoje = DatePart("d", Now)
MesHoje = DatePart("m", Now)
DiaNasc = DatePart("d", DataNasc)
MesNasc = DatePart("m", DataNasc)
''Calcula a diferença de anos
DifAnos = DateDiff("yyyy", DataNasc, Now)
''Verifica dia/mês de nascimento
If MesHoje < MesNasc Then
DifAnos = DifAnos - 1
ElseIf MesHoje = MesNasc Then
If DiaHoje < DiaNasc Then
DifAnos = DifAnos - 1
End If
Else
End If
''Valor final da função
CalculaIdade = DifAnos
Idade_Fim:
Exit Function
Idade_Err:
MsgBox Err.Description
Resume Idade_Fim
End Function
Pergunta
D@rk
Olá boa noite pessoal,
Sou usuário do script abaixo. Ele funciona perfeitamente, só que calcula a idade sempre um ano a menos, gostaria que me ajudassem se possível.
Segue abaixo:
Function CalculaIdade(DataNasc As Variant) As Variant ''Recebe a DataNasc e devolve a Idade em Anos On Error GoTo Idade_Err ''Evita o erro de data não preenchida If IsNull(DataNasc) Then CalculaIdade = "" Exit Function End If ''Declarando Variáveis Dim DataHoje As Variant, DiaHoje As Integer Dim MesNasc As Integer, DiaNasc As Integer Dim DifAnos As Integer, MesHoje As Integer ''Isola as partes (dia/mês) das duas datas DiaHoje = DatePart("d", Now) MesHoje = DatePart("m", Now) DiaNasc = DatePart("d", DataNasc) MesNasc = DatePart("m", DataNasc) ''Calcula a diferença de anos DifAnos = DateDiff("yyyy", DataNasc, Now) ''Verifica dia/mês de nascimento If MesHoje < MesNasc Then DifAnos = DifAnos - 1 ElseIf MesHoje = MesNasc Then If DiaHoje < DiaNasc Then DifAnos = DifAnos - 1 End If Else End If ''Valor final da função CalculaIdade = DifAnos Idade_Fim: Exit Function Idade_Err: MsgBox Err.Description Resume Idade_Fim End FunctionEu tentei colocar no final da funçãosó que ele funciona pra alguns casos, outros não.
Alguma dica?
Abs,
Editado por D@rkLink para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.