Referente exibição ...
 
Notifications
Clear all

Referente exibição idade

8 Posts
2 Usuários
0 Reactions
2,364 Visualizações
(@barbozams)
Posts: 50
Trusted Member
Topic starter
 

Prezados participantes do fórum,
tenho um desafio que não consigo resolver.
Tenho uma "textbox1" onde insiro da data de nascimento e uma outra "textbox2" onde gostaria que aparecesse a idade automaticamente, assim que inserisse a data de nascimento contida na "textbox1".
O cálculo na planilha eu consegui fazer mas, gostaria que tudo isto fosse feito em um formulário e fosse automaticamente lançado na planilha.
Espero ter sido claro em minha exposição.
Anexo o que estou tentando fazer.
Grato

 
Postado : 07/06/2012 8:17 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Em um Módulo:

Function dhAge(dtmBD As Date, Optional dtmDate As Date = 0) _
 As Integer
    ' This procedure is stored as dhAgeUnused in the sample
    ' module.
    Dim intAge As Integer
    If dtmDate = 0 Then
        ' Did the caller pass in a date? If not, use
        ' the current date.
        dtmDate = Date
    End If
    intAge = DateDiff("yyyy", dtmBD, dtmDate)
    If dtmDate < DateSerial(Year(dtmDate), Month(dtmBD), _
     Day(dtmBD)) Then
        intAge = intAge - 1
    End If
    dhAge = intAge
End Function

No VBA do Form:

Private Sub txtDataNasc_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.TxtDataNasc <> "" Then
TextBox2 = dhAge(TxtDataNasc)
Exit Sub
End If
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/06/2012 9:28 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Para outro maneira e próxima do mestre JoseA, veja..

Foi baseado em um botão de Comando.

Private Sub CommandButton1_Click()
Dim dateComp As Date
dateComp = CDate(TxtDataNasc.Value)
TextBox2.Text = DateDiff("yyyy", dateComp, Now)
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/06/2012 9:40 am
(@barbozams)
Posts: 50
Trusted Member
Topic starter
 

Agradeço mais uma vez ao JoseA, alexandrevba e a todos que pelo olharam o tópico.
A resposta que mais atendeu as minhas necessidade foi a do JoseA porque já me informa automaticamente a idade na textbox sem a necessidade de clicar em nenhum botão para executar a tarefa.
Portanto tópico Resolvido!

 
Postado : 07/06/2012 10:39 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Olá, barbozams, que bom que conseguiu resolver,então para manter o fórum organizado, Por favor marque sua postagem como resolvido!!

Veja como em:

viewtopic.php?f=7&t=3784

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/06/2012 11:00 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

...porque já me informa automaticamente a idade na textbox sem a necessidade de clicar em nenhum botão para executar a tarefa...

Como a indicação do Alexandre, também dá:

Private Sub txtDataNasc_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim dateComp As Date
dateComp = CDate(TxtDataNasc.Value)
If Me.TxtDataNasc <> "" Then
TextBox2 = DateDiff("yyyy", TxtDataNasc, Now)
TxtDataNasc.Value = dateComp
Exit Sub
End If
End Sub

E seria mais simplificada.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/06/2012 11:15 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Quanto mais melhor.. :lol:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Ao apertar enter
If KeyCode = 13 Then
   Dim dateComp As Date

   'Converter textbox1 para data
   dateComp = CDate(TxtDataNasc.Value)
   'Atribuir a diferença de data em anos para textbox 2
   TextBox2.Text = DateDiff("yyyy", dateComp, Now)
End If
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/06/2012 11:18 am
(@barbozams)
Posts: 50
Trusted Member
Topic starter
 

Alexandrevba,
para que seu último código fique ainda mais perfeito, só faltou a separação da data com o sinal de "/".
No mais funciona perfeitamente.

Grato

 
Postado : 07/06/2012 12:30 pm