CALCULA IDADE - ERRO
Boa tarde galera estou com o seguinte problema eu uso essa função para calcular a idade da pessoa só que se a pessoa tiver nascido com a data de 31 da um erro de Type mismatch. o erro ocorre na linha em vermelho.
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
[txt-color=#ff0000] dias = DateDiff("d", Day(DTNasc) & "/" & Month(Date) & "/" & Year(Format(Date, "dd/mm/yyyy")), Date)[/txt-color] End If
CalcularIdade = Anos & " Ano(s) " & Meses & " Mês(es) " & dias & " Dia(s)"
End Function
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
[txt-color=#ff0000] dias = DateDiff("d", Day(DTNasc) & "/" & Month(Date) & "/" & Year(Format(Date, "dd/mm/yyyy")), Date)[/txt-color] End If
CalcularIdade = Anos & " Ano(s) " & Meses & " Mês(es) " & dias & " Dia(s)"
End Function
Tente assim amigo
Os possÃveis problemas estavam nos itens em azul, já foram corrigidos... tente...
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)
[txt-color=#0000ff]End If[/txt-color]
CalcularIdade = Anos & " Ano(s) " & Meses & " Mês(es) " & dias & " Dia(s)"
End Function
'Exemplo de uso:
Private Sub Command1_Click()
MsgBox CalcularIdade[txt-color=#0000ff](#4/9/1982#)[/txt-color]
End SubOs possÃveis problemas estavam nos itens em azul, já foram corrigidos... tente...
Germanir mais uma vez obrigado pela atenção
o primeiro não era o End If ele ficou na frente foi na hora que eu postei
na realidade eu eu uso o calculaidade com um text tipo:
Text1.Text = CalculaIdade(txtidade)
tentei fazer assim mas deu erro
Text1.Text = CalculaIdade(#txtidade#)
obrigado
o primeiro não era o End If ele ficou na frente foi na hora que eu postei
na realidade eu eu uso o calculaidade com um text tipo:
Text1.Text = CalculaIdade(txtidade)
tentei fazer assim mas deu erro
Text1.Text = CalculaIdade(#txtidade#)
obrigado
A sua rotina pega por exemplo o dia 31/05/1981 menos [txt-color=#ff0000] 31/04/2005 [/txt-color], só que essa data à ± existe. entã ovc tem q fazer da seguinte maneira:
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
[txt-color=#0000ff] aux = IsDate(Day(DTNasc) & "/" & Month(Date) & "/" & Year(Format(Date, "dd/mm/yyyy")))
If aux = True Then
dias = DateDiff("d", DateAdd("m", -1, Day(DTNasc) & "/" & Month(Date) & "/" & Year(Format(Date, "dd/mm/yyyy"))), Date)
Else
dias = DateDiff("d", DateAdd("m", -1, (Day(DTNasc) - 1) & "/" & Month(Date) & "/" & Year(Format(Date, "dd/mm/yyyy"))), Date)
End If
[/txt-color]
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
Até mais...
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
[txt-color=#0000ff] aux = IsDate(Day(DTNasc) & "/" & Month(Date) & "/" & Year(Format(Date, "dd/mm/yyyy")))
If aux = True Then
dias = DateDiff("d", DateAdd("m", -1, Day(DTNasc) & "/" & Month(Date) & "/" & Year(Format(Date, "dd/mm/yyyy"))), Date)
Else
dias = DateDiff("d", DateAdd("m", -1, (Day(DTNasc) - 1) & "/" & Month(Date) & "/" & Year(Format(Date, "dd/mm/yyyy"))), Date)
End If
[/txt-color]
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
Até mais...
Tente chamar a função por:
Text1.Text = CalculaIdade([txt-color=#0000ff]CDate(txtidade)[/txt-color])
Até mais!
Text1.Text = CalculaIdade([txt-color=#0000ff]CDate(txtidade)[/txt-color])
Até mais!
Luan:
Use esta ocx que eu fiz quando era mais novinho.
http://www.vbmania.com.br/vbmdetail.php?varID=199
Use esta ocx que eu fiz quando era mais novinho.
http://www.vbmania.com.br/vbmdetail.php?varID=199
Tópico encerrado , respostas não são mais permitidas