none
FORMULARIO VBA PROCV COMBOX TEXTBOX RRS feed

  • Pergunta

  • Parceiros,

    Criei um formulário em VBA (Useform) e sua utilização é de ao cadastrar dados de empregados no formulário os mesmos sejam transportados para uma planilha Excel.

    Como o primeiro dado a ser digitado é a matricula do empregado, criei uma caixa de texto  e coloquei ao seu lado um botão de Pesquisa, para que ao digitar esse numero o mesmo carregue duas outras caixas de texto: NOME e a LOJA em que esse empregado esteja alocado e após acabar as digitações de outros campos, esses sejam carregados para uma planilha Excel após clicar em SALVAR. Minha necessidade é:

    ==> Como configurar as caixas de texto NOME e LOJA, que quando digitar a matricula e clicar no botão PESQUISAR, carregue somente essas duas caixas de texto, e após acabar a digitação ao clicar em SALVAR os dados sejam transferidos para a planilha?

    Obs: O restante do formulário esta completo, somente me falta ajustar essa situação

    IMPORTANTE: Na planilha existe uma aba contendo os dados de todos os empregados que devem ser capturado por PROCV para o preenchimento das caixas de texto: NOME e LOJA.

    Preciso entregar esse projeto na proxima segunda-feira.

    Conto com voces!

    Obrigado

    GODINHO VBA

    sexta-feira, 23 de dezembro de 2016 23:33

Respostas

  • Você tem razão, esqueci de mencionar essa parte.

    Nova rotina do botão pesquisar:

    Dim Row As Variant
    
    If txtNome.Text = "" Then
        MsgBox "Digite um nome!", vbExclamation
        Exit Sub
    End If
    
    Row = Application.Match(txtNome.Text, ws.Columns("A"), 0)
    If IsError(Row) Then
        lblRow = ""
        MsgBox "Nome não encontrado.", vbExclamation
        Exit Sub
    Else
        lblRow = Row
    End If
    
    txtIdade = ws.Cells(Row, "A")
    txtCPF = ws.Cells(Row, "B")
    txtFilhos = ws.Cells(Row, "C")
    txtSexo = ws.Cells(Row, "D")
    txtEndereco = ws.Cells(Row, "E")
    txtTelefone = ws.Cells(Row, "F")
    

    Conseguiu entender a ideia?


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    sábado, 24 de dezembro de 2016 18:01
    Moderador

Todas as Respostas

  • Crie um Label chamado lblLinha, que irá armazenar em qual linha será gravado o novo registro.

    Na rotina do botão Salvar, você deverá testar o valor de lblRow. Se for vazio, a variável Linha será igual a ws.Cells(ws.Rows.Count, "A").End(xlUp).Row (em que ws é a variável que representa a planilha de seu banco de dados). Caso contrário, irá valer o mesmo tanto do rótulo lblRow.

    Na rotina do botão pesquisar, você deverá escrever algo do tipo:

    Dim Row As Variant
    
    If txtNome.Text = "" Then
        MsgBox "Digite um nome!", vbExclamation
        Exit Sub
    End If
    
    Row = Application.Match(txtNome.Text, ws.Columns("A"), 0)
    If IsError(Row) Then
        lblRow = ""
    MsgBox "Nome não encontrado.", vbExclamation Else lblRow = Row End If

    É necessário ter um botão de comando chamado btnNovo, e sua rotina deverá limpar os controles do formulário e atribuir também lblRow = "" no caso da pessoa querer criar um novo cadastro.


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    sábado, 24 de dezembro de 2016 11:09
    Moderador
  • Felipe,

    Apos digitar no campo MATRICULA, o meu botão PESQUISAR devera identificar atraves de um processo PROCV e localizando na aba onde contem os dados dos empregados, devera em seguida preencher outros 02 campos abaixo: NOME e a LOJA.

    No seu exemplo, não esta contido o PROCV e o alto preenchimento.

    sábado, 24 de dezembro de 2016 16:52
  • Você tem razão, esqueci de mencionar essa parte.

    Nova rotina do botão pesquisar:

    Dim Row As Variant
    
    If txtNome.Text = "" Then
        MsgBox "Digite um nome!", vbExclamation
        Exit Sub
    End If
    
    Row = Application.Match(txtNome.Text, ws.Columns("A"), 0)
    If IsError(Row) Then
        lblRow = ""
        MsgBox "Nome não encontrado.", vbExclamation
        Exit Sub
    Else
        lblRow = Row
    End If
    
    txtIdade = ws.Cells(Row, "A")
    txtCPF = ws.Cells(Row, "B")
    txtFilhos = ws.Cells(Row, "C")
    txtSexo = ws.Cells(Row, "D")
    txtEndereco = ws.Cells(Row, "E")
    txtTelefone = ws.Cells(Row, "F")
    

    Conseguiu entender a ideia?


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    sábado, 24 de dezembro de 2016 18:01
    Moderador
  • Felipe, perfeito!

    Resolvido o problema.

    Muito obrigado!!!

    Godinho VBA.

    quarta-feira, 28 de dezembro de 2016 23:47