Visual Basic 6 - Calculando a idade com precisão


 Você alguma vez já precisou calcular a idade de uma pessoa e expressar o valor em anos , meses e dias ? 

Calculando a idade em anos , meses e dias ! 

Mostramos nesta dica uma função para fazer o cálculo:

1-) Inicie um novo projeto no VB e no formulário padrão insira um controle maskeditbox e um botão de comando e um label , conforme o layout abaixo:

A seguir insira o seguinte código no evento click do botão de comando - command1 :

Private Sub Command1_Click()
If maskdata <> "__/__/____" Then
    Label1.Caption = calcula_idade(maskdata)
Else
   MsgBox "Informe uma data válida ", vbCritical, "Data Inválida"
End If
End Sub

Aqui estamos fazendo a chamada da função - Calcula_Idade - passando como parâmetro a data informada.

O código da função que retorna o valor calculado é o seguinte:

Private Function calcula_idade(datanascimento As Date)
Dim anos, meses, dias as integer
Dim ianos, imeses, idias As Double
Dim diferença As Double

If IsNull(datanascimento) Or datanascimento > Now Then
   MsgBox "Data de nascimento inválida !", vbCritical, "Data invalida"
   Exit Function
End If

diferenca = Now - datanascimento

ianos = diferenca / 365.25
anos = Int(ianos)
imeses = (ianos - anos) * 12
meses = Int(imeses)
dias = DateDiff("d", DateSerial(DatePart("yyyy", datanascimento) + anos, DatePart("m", datanascimento) + meses, Day(datanascimento)), Now)

If dias = 30 Then
  dias = 0
End If
If meses = 12 Then
  meses = 0
  anos = anos + 1
End If
If anos > 1 Then
  anos = anos & " anos "
Else
  anos = anos & " ano "
End If
If meses > 1 Then
  meses = meses & " meses "
Else
  meses = meses & " mês "
End If
If dias > 1 Then
   dias = dias & " dias "
Else
  dias = dias & " dia "
End If
calcula_idade = anos & meses & dias
End Function

Executando o projeto e testando temos:

Obs: Esta função tem um bug , quem descobrir ganha um doce...

Até mais...

Referências:


José Carlos Macoratti