CALCULO DA IDADE MAIS OS MESES

RICARDOCENTENO 17/08/2010 00:27:59
#350443
Olá gente tudo bem? Acho que essa dúvia que tenho, muitos podem dar risada, mas não consegui achar lógica. Vamos lá. to fazendo um programa de cadastro e nela tem o campo de data de nascimento. Então segue o exemplo:

Nasci em 29/06/1983 - Hoje são 17/08/2010. Faço o cálculo da idade fazendo o ano corrente menos ano de nascimento. Até ae tudo bem. Mas como calcular os meses de maneira que o cálculo saia 27 anos e 2 meses (não estou levando os dias e sim somente o mês pois senão teria que desmembrar os dias também) Outro detalhe, não quero saber quanto de idade eu tenho em meses e sim saber a diferença do mês do aniversário com o mês corrente.
Como proceder?
JAMESBOND007 17/08/2010 07:57:49
#350447
veja se isso pode te audar!
Public Function CalcularIdade(DTNasc As Date) As String
Dim Anos As Single, Meses As String, Dias As Single
Dim UTDTNasc As Date
If Month(DTNasc) <= Month(Date) Then
If Month(DTNasc) <> Month(Date) Then
UTDTNasc = Day(DTNasc) & [Ô]/[Ô] & Month(DTNasc) & [Ô]/[Ô] & Year(Format(Date, [Ô]dd/mm/yyyy[Ô]))
Else
If Day(DTNasc) <= Day(Date) Then
UTDTNasc = Day(DTNasc) & [Ô]/[Ô] & Month(DTNasc) & [Ô]/[Ô] & Year(Format(Date, [Ô]dd/mm/yyyy[Ô]))
Else
GoTo NPassou
End If
End If
Else
NPassou:
UTDTNasc = Day(DTNasc) & [Ô]/[Ô] & Month(DTNasc) & [Ô]/[Ô] & Year(Format(Date, [Ô]dd/mm/yyyy[Ô])) - 1
End If
Anos = DateDiff([Ô]yyyy[Ô], DTNasc, UTDTNasc)
Meses = DateDiff([Ô]m[Ô], UTDTNasc, Date)
If Day(Date) < Day(UTDTNasc) Then
Meses = Meses - 1
Dias = DateDiff([Ô]d[Ô], DateAdd([Ô]m[Ô], -1, Day(DTNasc) & [Ô]/[Ô] & Month(Date) & [Ô]/[Ô] & Year(Format(Date, [Ô]dd/mm/yyyy[Ô]))), Date)
ElseIf Day(Date) = Day(UTDTNasc) Then
Dias = 0
ElseIf Day(Date) > Day(UTDTNasc) Then
Dias = DateDiff([Ô]d[Ô], Day(DTNasc) & [Ô]/[Ô] & Month(Date) & [Ô]/[Ô] & Year(Format(Date, [Ô]dd/mm/yyyy[Ô])), Date)
End If
CalcularIdade = Anos & [Ô] Ano(s) [Ô] & Meses & [Ô] Mês(es) [Ô] & Dias & [Ô] Dia(s)[Ô]
End Function
GERARDA 17/08/2010 11:05:46
#350491
inda não testei

If Not IsDate(Text1.Text) Then
MsgBox [Ô] Data Invalida !! [Ô], vbCritical, [Ô] Erro na Data [Ô]
Cancel = True
Else
Data = CVDate(Text1.Text)
End If
End Sub
Private Sub Command1_Click()
Dim d1, d2, d3, d4, d5 As Single

d1 = DateDiff([Ô]d[Ô], Data, Now)
d2 = DateDiff([Ô]m[Ô], Data, Now)
d3 = DateDiff([Ô]yyyy[Ô], Data, Now)
d4 = DateDiff([Ô]s[Ô], Data, Now)

Msg = [Ô] Sua idade e : [Ô] & vbCrLf
Msg = Msg & [Ô] ============================== [Ô] & vbCrLf
Msg = Msg & [Ô] Em dias : [Ô] & d1 & [Ô] dias [Ô] & vbCrLf
Msg = Msg & [Ô] Em meses : [Ô] & d2 & [Ô] meses [Ô] & vbCrLf
Msg = Msg & [Ô] Em anos : [Ô] & d3 & [Ô] anos [Ô] & vbCrLf
Msg = Msg & [Ô] Em segundos : [Ô] & d4 & [Ô] segundos [Ô] & vbCrLf

MsgBox Msg, vbOKOnly, [Ô] calculando intervalos de datas [Ô]

End Sub

mas tenta ai
Tópico encerrado , respostas não são mais permitidas