CALCULO DA IDADE MAIS OS MESES
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?
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?
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
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
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