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

Pesquisa VBA Excel

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
souzadenilson
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qua Set 19, 2018 7:04 pm

Pesquisa VBA Excel

Mensagem por souzadenilson »

Boa tarde.
Criei um formulario no qual quando desejo fazer uma alteração nos dados, abre-se outro formulario.
Quando digito o nome, a listbox é preenchida, porém qualquer letra que digito todos os registro vão para caixa de listagem. Estou tentando a medida que vou digitando na textbox o(s) registro(s) apareçam na caixa de listagem. A ideia é que ele procure em qualquer parte do texto o nome que digitar.
Exemplo. Se digitar san (todos os registros que em alguma parte do cadastro tiver eles apareçam na listbox)
E depois que selecionar clico no que desejo alterar e em outro formulario faça a alteração.
Anexos
Sistema de Gerenciamento1.rar
Sistema de Gerenciamento
(38.47 KiB) Baixado 270 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
excelflex
Colaborador
Colaborador
Mensagens: 20
Registrado em: Sex Set 14, 2018 7:03 pm

Re: Pesquisa VBA Excel

Mensagem por excelflex »

Olá, substitua a sua rotina preenche_lista() por esta que eu fiz algumas modificações.
Coloquei comentários nas linhas que modifiquei, para ficar mais claro as modificações.

Código: Selecionar todos

Private Sub preenche_lista()
Dim ws As Worksheet
Dim i As Integer
Dim TextoCelula As String
  Set ws = ThisWorkbook.Worksheets("fornecedor")
  
  Me.Lista_Fornecedores.Clear
  Me.Lista_Fornecedores.ColumnCount = 12
  Me.Lista_Fornecedores.ColumnWidths = "30;150;70;70;70;70;70;70;70;70;70"
  
  If Trim(TextoDigitado) = Empty Then Exit Sub '#### Marcus www.excelflex.com.br: Se não tiver nada digitado então finaliza o procedimento
  With ws
    Dim cell As Variant '#### Marcus www.excelflex.com.br: Variável que vai percorrer todas as células da sua tabela
    Dim linAdd As Long  '#### Marcus www.excelflex.com.br: Variável para evitar duplicidade de linhas no resultado, caso seja encontrada mais de uma correspondência na mesma linha
    For Each cell In Range("A2:L" & Range("A1").End(xlDown).Row) '#### Marcus www.excelflex.com.br: Estrutura de repetição for each para ler todas as células da range
      TextoCelula = cell.Value '#### Marcus www.excelflex.com.br: atribui o valor da célula em TextoCelula
      If InStr(1, UCase(TextoCelula), UCase(TextoDigitado)) > 0 And linAdd <> cell.Row Then '#### Marcus www.excelflex.com.br: verifica se existe alguma ocorrência da célula no texto digitado
        Me.Lista_Fornecedores.AddItem ws.Range("A" & cell.Row)
        Me.Lista_Fornecedores.List(Me.Lista_Fornecedores.ListCount - 1, 1) = ws.Range("B" & cell.Row)
        Me.Lista_Fornecedores.List(Me.Lista_Fornecedores.ListCount - 1, 2) = ws.Range("C" & cell.Row)
        Me.Lista_Fornecedores.List(Me.Lista_Fornecedores.ListCount - 1, 3) = ws.Range("D" & cell.Row)
        Me.Lista_Fornecedores.List(Me.Lista_Fornecedores.ListCount - 1, 4) = ws.Range("E" & cell.Row)
        Me.Lista_Fornecedores.List(Me.Lista_Fornecedores.ListCount - 1, 5) = ws.Range("F" & cell.Row)
        Me.Lista_Fornecedores.List(Me.Lista_Fornecedores.ListCount - 1, 6) = ws.Range("G" & cell.Row)
        Me.Lista_Fornecedores.List(Me.Lista_Fornecedores.ListCount - 1, 7) = ws.Range("H" & cell.Row)
        linAdd = cell.Row '#### Marcus www.excelflex.com.br: armazena o número da linha que houve a correspondência para não repetir na próxima verificação
      End If
    Next cell
  End With
End Sub


souzadenilson
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qua Set 19, 2018 7:04 pm

Re: Pesquisa VBA Excel

Mensagem por souzadenilson »

A principio está funcionando perfeitamente, porém que não está dando certo é que ao selecionar o registro ele não preenche textbox do formulario fornecedor


Avatar do usuário
excelflex
Colaborador
Colaborador
Mensagens: 20
Registrado em: Sex Set 14, 2018 7:03 pm

Re: Pesquisa VBA Excel

Mensagem por excelflex »

Dá uma olhada agora...
Anexos
Sistema de Gerenciamento v1.zip
(32.43 KiB) Baixado 276 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.


souzadenilson
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qua Set 19, 2018 7:04 pm

Re: Pesquisa VBA Excel

Mensagem por souzadenilson »

Obrigado.


souzadenilson
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qua Set 19, 2018 7:04 pm

Re: Pesquisa VBA Excel

Mensagem por souzadenilson »

Alterei a criação do código para que gere somente números, ao pesquisar na caixa de listagem , digito e funciona perfeitamente, porém quando clico no registro, o mesmo não preenche a textbox.
Tentei alterar informação na caixa de listagem e não funcionou
Anexos
Sistema de Gerenciamento v2.rar
Sistema de Gerenciamento
(127.99 KiB) Baixado 271 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.


Responder