CALCULA IDADE - ERRO

 Tópico anterior Próximo tópico Novo tópico

CALCULA IDADE - ERRO

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#77035 - 06/04/2005 16:17:32

USUARIO.EXCLUIDOS

Cadast. em:


Boa tarde galera estou com o seguinte problema eu uso essa funo 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
      dias = DateDiff("d", Day(DTNasc) & "/" & Month(Date) & "/" & Year(Format(Date, "dd/mm/yyyy")), Date)   End If
   CalcularIdade = Anos & " Ano(s) " & Meses & " Ms(es) " & dias & " Dia(s)"
End Function




#77052 - 06/04/2005 17:25:37

USUARIO.EXCLUIDOS

Cadast. em:


Tente assim amigo

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 & " Ms(es) " & dias & " Dia(s)"
End Function


'Exemplo de uso:
Private Sub Command1_Click()
MsgBox CalcularIdade(#4/9/1982#)
End Sub

Os possveis problemas estavam nos itens em azul, j foram corrigidos... tente...



#77053 - 06/04/2005 17:34:20

USUARIO.EXCLUIDOS

Cadast. em:


Germanir mais uma vez obrigado pela ateno
o primeiro no 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



Resposta escolhida #77056 - 06/04/2005 17:54:02

TROVAM
SUZANO
Cadast. em:Novembro/2004


A sua rotina pega por exemplo o dia 31/05/1981 menos 31/04/2005 , 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
      
       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
      
      


   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 & " Ms(es) " & dias & " Dia(s)"
End Function

At mais...

Trovam...
renato_sptva@hotmail.com


#77074 - 06/04/2005 19:30:55

USUARIO.EXCLUIDOS

Cadast. em:


Tente chamar a funo por:
Text1.Text = CalculaIdade(CDate(txtidade))
At mais!



#77079 - 06/04/2005 20:14:21

USUARIO.EXCLUIDOS

Cadast. em:


Luan:

Use esta ocx que eu fiz quando era mais novinho.

http://www.vbmania.com.br/vbmdetail.php?varID=199



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por WEBMASTER em 18/08/2009 10:03:45