Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Preencher uma Text Box a partir de dados de outra Text Box

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Gilnei Lima
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Qui Mar 13, 2014 10:02 am

Preencher uma Text Box a partir de dados de outra Text Box

Mensagem por Gilnei Lima »

Olá pessoal. Sou ainda um iniciante na programação vba no excel, e só consegui montar até agora alguns formulários bem simples, mas sempre a partir de planilhas modelos ou com ajuda de suporte/dicas disponibilizadas na internet. Agora, estou desenvolvendo uma nova planilha para lançar apontamentos de produção, por meio de um Userform que possui alguns Text Box.

Minha questão é a seguinte: nesse userform, tenho 2 campos - Nº de Matrícula (txtMat) e Nome do Funcionário (txtNome) - e gostaria de saber como eu poderia preencher o txtNome a partir do valor correspondente da txtMat, exemplo: quando eu lançar no "Nº de Matric." o valor 100, automaticamente, preencer em "Nome" Maria de Jesus Silva. Eu inclusive já criei uma lista com o título "nome", com o intervalo das células que preciso puxar, porém não consegui aplicar o comando no text box.

Vi alguns tópicos aqui no fórum, porém não identifiquei um onde eu pudesse aplicar exatamente no meu pequeno projeto.

Ficarei muito grato mesmo, se alguém puder me dá uma força neste trabalho. Desde já agradeço.

Atenciosamente,
Gilnei Lima.

Aqui a planilha:
Produtividade.rar
Planilha Produtividade dos Funcionários
(185.32 KiB) Baixado 627 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
joseA
Jedi
Jedi
Mensagens: 1048
Registrado em: Qui Out 22, 2009 7:22 am
Localização: Cel. Fabriciano - MG

Re: Preencher uma Text Box a partir de dados de outra Text B

Mensagem por joseA »

Bem vindo ao Tomás Vasquez/Fórum!!!!!

Utilizando uma adaptação desse tópico: viewtopic.php?f=20&t=2996

Copie/cole na área vba do seu form, faça o teste.

Código: Selecionar todos

Private Sub txtMat_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim x As Range
    Dim sLin
    
    sLin = 2
    If Me.txtMat = "" Then
        Exit Sub
    End If
    
    UL = Cadastro.Range("D65536").End(xlUp).Row '.Value 'definir a UL(UltimaLinha)
    PL = Cadastro.Range("D2").End(xlUp).Row          '.Value 'definir a PL(Primeira Linha)
    
    Set x = Cadastro.Range("D" & UL & ":" & "D" & 2)
    
    For Each c In x
        If CDbl(c.Value) = CDbl(txtMat) Then
            Me.txtNome = Cadastro.Range("E" & sLin).Value
        Else
            MsgBox "Matricula não cadastrada!!!", 64, "Produtividade"
            Me.txtNome = ""
        End If
        
        sLin = sLin + 1
        
    Next

End Sub


Gilnei Lima
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Qui Mar 13, 2014 10:02 am

Re: Preencher uma Text Box a partir de dados de outra Text B

Mensagem por Gilnei Lima »

Primeiramente, muito obrigado pelas boas vindas.

Inseri o código na form exatamente como você escreveu, mas não funcionou. Apareceu uma mensagem de erro no código:
...
If CDbl(c.Value) = CDbl(txtMat) Then
...

Estou anexando a figura do erro.
Msg Erro
Msg Erro
Msg Erro.jpg (203.52 KiB) Exibido 12225 vezes
De antemão, gostaria de agradecer a atenção.


Avatar do usuário
joseA
Jedi
Jedi
Mensagens: 1048
Registrado em: Qui Out 22, 2009 7:22 am
Localização: Cel. Fabriciano - MG

Re: Preencher uma Text Box a partir de dados de outra Text B

Mensagem por joseA »

Desculpa ai, confundi as coluna e a planilha, teste ai.

Código: Selecionar todos

Private Sub txtMat_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim x As Range
    Dim sLin
    
    sLin = 2
    If Me.txtMat = "" Then
        Exit Sub
    End If
    
    UL = Listagem.Range("B65536").End(xlUp).Row '.Value 'definir a UL(UltimaLinha)
    PL = Listagem.Range("B2").End(xlUp).Row          '.Value 'definir a PL(Primeira Linha)
    
    Set x = Listagem.Range("B" & UL & ":" & "B" & 2)
    
    For Each c In x
        If CDbl(c.Value) = CDbl(txtMat) Then
            Me.txtNome = Listagem.Range("C" & sLin).Value
        End If
        
        sLin = sLin + 1
        
    Next

End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Gilnei Lima
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Qui Mar 13, 2014 10:02 am

Re: Preencher uma Text Box a partir de dados de outra Text B

Mensagem por Gilnei Lima »

Oi, joseA

Agora funcionou direitinho mesmo. Muito obrigado pela força.
Há dias eu vinha procurando por essa resposta.

Grato.


HUGO SOUZA
Colaborador
Colaborador
Mensagens: 59
Registrado em: Sáb Mar 15, 2014 5:48 pm

Re: Preencher uma Text Box a partir de dados de outra Text B

Mensagem por HUGO SOUZA »

Oi Gilnei! Eu sei que sua dúvida foi resolvida e jamais quero desfazer do JoséA... Sou mais iniciante do que vc, acredite, mas, a título de conhecimento e função PROCV automática resolve o seu caso.

Você já tem uma lista...
MATRÍCULA NOME
100 MARIA

Private Sub txtMat_Change()
On Error Resume Next
If txtMat <> "" Then
txtNome = Application.WorksheetFunction.VLookup(CDbl(txtMat), Plan1.Range("b11:c15"), 2, 0) '=PROCV(H2;A1:B3;2;0)
Else
txtNome.Value = ""
End If
End Sub

Ou seja, quando alterar a TextBox da matrícula, ela busca o nome correspondente na sua lista (Local destacado em vermelho) e alimenta a TextBox do Nome.

Eu já usei isto. Mesmo que não precise mais, faça o teste, isso te pode ser útil daqui pra frente!


CROVADOR
Manda bem
Manda bem
Mensagens: 106
Registrado em: Ter Mar 13, 2018 11:15 am

Re: Preencher uma Text Box a partir de dados de outra Text Box

Mensagem por CROVADOR »

Olá amigos estou tentando buscar dados pela textbox em meu formulario, o banco é no access. mas está dando este erro ----> PLACA_VEICULO não é um indice desta tabela.

Alguém pode ajudar-me?

Private Sub PLACA_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'On Error Resume Next
Dim Conexao As Database
Dim Selecionar As Recordset
Dim codigo As Integer

Set Conexao = OpenDatabase(ActiveWorkbook.Path & "\DatabaseEstoque.mdb")
Set Selecionar = Conexao.OpenRecordset("TB_FROTA")

Selecionar.Index = "PLACA_VEICULO"
Selecionar.Seek "=", PLACA
codigo = Selecionar!CÓDIGO


NOMECNPJ.Text = Selecionar!RAZAO_SOCIAL


End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder