Ir para conteúdo
Fórum Script Brasil
  • 0

DblClick Listbox retorna ano errado em textbox [Resolvido]


AlexCont

Pergunta

Boa tarde!

Estou enfrentando esse problema ao clicar na Listbox p/ retornar um dado ano extraído de uma data.

Meu código é esse:

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Dim ctr As Controle
Set ctr = Controle

Linha = ListBox1.ListIndex

ctr.TECod = ListBox1.List(Linha, 0)
ctr.txt_data = ListBox1.List(Linha, 1)
ctr.txt_mes = Format(ListBox1.List(Linha, 2), "mmmm")
ctr.txt_ano = Format(ListBox1.List(Linha, 3), "yyyy")


Exit sub

End Sub
'formato data automático:
Private Sub txt_data_Change()
   
    If Len(txt_data) = 2 Then
            txt_data = txt_data + "/"
            txt_data.SelStart = 4
End If

If Len(txt_data) = 5 Then
            txt_data = txt_data + "/"
            txt_data.SelStart = 7
End If
  
End Sub

'ao dar tab no userform, insere automático "mês" e "ano", nas textbox
Private Sub txt_data_Exit(ByVal Cancel As MSForms.ReturnBoolean)

On Error Resume Next

Dim mes, ano As String
    'Dim dataInserida As Date
    'DateInserida = CDate(txt_data.Value)
     
        If IsDate(txt_data.Value) Then
        mes = VBA.Format(txt_data.Text, "mmmm")
        txt_mes.Text = mes
        ano = VBA.Format(txt_data.Text, "yyyy")
        txt_ano.Text = ano
    Else
        MsgBox "Por favor, insira uma data válida.", vbExclamation
        txt_data.Value = ""
        txt_mes.Value = ""
        txt_ano.Value = ""
        
End If
   
End Sub

No form de cadastro, fica do jeito certo. Apenas quanto filtro e clico pelo listbox, é que o retorno sai com o ano errado (conforme print).

Agradeço pela ajuda.

print.png

Editado por AlexCont
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eu uso o VBA for Aplications do Microsoft Access, mas acredito que a solução seja válida no VBA. Ao invés de usar três rotinas, a minha sugestão é usar apenas duas, assim:

Option Compare Database

Private Sub ListBox1_DblClick(Cancel As Integer)
    Me.txt_data = ListBox1.Value
    Call txt_data_Exit(Cancel)
End Sub


Private Sub txt_data_Exit(Cancel As Integer)
   If IsDate(txt_data.Value) Then
        Me.txt_mes.Value = Format(txt_data.Value, "mmmm")
        Me.txt_ano.Value = Format(txt_data.Value, "yyyy")
    Else
        MsgBox "Por favor, insira uma data válida.", vbExclamation
        Me.txt_mes.Value = ""
        Me.txt_ano.Value = ""
        Me.txt_data.Value = ""
    End If
End Sub

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...