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

Filtro no Listbox com "*"

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
fallex
Colaborador
Colaborador
Mensagens: 13
Registrado em: Ter Jul 28, 2020 12:23 pm

Filtro no Listbox com "*"

Mensagem por fallex »

Olá amigos, bom dia.
Estou encontrando problemas ao utilizar um filtro com listbox no vba.
Eu tenho formulário com filtro de cpf, o que funciona perfeitamente, entretanto para pesquisar nome não funciona. Creio que a diferença é que o filtro de CPF é uma pesquisa exata, e o nome é uma pesquisa com "*", que deve filtrar por qualquer valor que contenha o texto.
O código que eu utilizei é abaixo.

Código: Selecionar todos

Private Sub btnbuscanome_Click()

Dim nome As String
nome = Me.txtnome.Text
'APLICAÇÃO DO FILTRO
ActiveSheet.Range("$A$1:$CD$1069").AutoFilter Field:=8, Criteria1:="*" & nome & "*"

'CONDICAO PARA CARREGAR A LISTBOX
If ListBox1.ListCount < 1 Then
Call carregar_listbox
End If

'PROCURA O VALOR NOME NA LISTBOX
For item = 0 To ListBox1.ListCount - 1

If txtnome.Value <> "" Then
On Error Resume Next
If ListBox1.List(item, 6) = nome Then

Else
ListBox1.RemoveItem (item)
item = item - 1
ListBox1 = Null
End If
End If

Next

End Sub
Este código filtra o valor "nome" na planilha corretamente, entretanto, na listbox ele faz uma varredura na linha 6, "If ListBox1.List(item, 6) = nome", onde possui os nomes na listbox. Aqui era para excluir da listbox os itens cujo valor "nome" não forem iguais ao valor "nome", porém, a listbox exclui todos os registros, já que o filtro na listbox procura como valor exato e não como "*" & nome & "*".

Pra resumir, se eu filtro no nome Aline....todas as Aline aparecem na planilha, independente do sobrenome, mas na listbox, não aparece nenhuma pois a busca na listbox acontece com o valor exato, não considerando os sobrenomes.

Obrigado a todos pela ajuda.


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
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Filtro no Listbox com "*"

Mensagem por webmaster »

fallex,

Acho que o operador Like é o que você procura. Esse tutorial explica bem sobre o mesmo:

http://www.jorgepaulino.com/2013/04/operador-like.html


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Filtro no Listbox com "*"

Mensagem por Reinaldo »

Assim no escuro, vamos no "achômetro":
altere a linha
If ListBox1.List(item, 6) = nome Then
para
If ListBox1.List(item, 6) like "*" & nome & "*" Then
Se não atender poste um modelo representativo de sua estrutura/dados


fallex
Colaborador
Colaborador
Mensagens: 13
Registrado em: Ter Jul 28, 2020 12:23 pm

Re: Filtro no Listbox com "*"

Mensagem por fallex »

Olá Amigos,

Eu entendi o conceito do Like, mas não consegui implementa-lo no projeto.
Reinaldo, testei suas idéias....o filtro ainda funciona mas na planilha, não funciona na listbox.

Como você sugeriu, em anexo está meu material de estudo. É ainda incompleto e certamente possui erros. De qualquer forma, se você utilizar o material, e fizer uma busca pelo cpf ou pedido verá que funciona perfeitamente....mas no nome não funciona....creio que utilizando será possível ver o que quero dizer filtrar na listbox.

Obrigado pelas ajudas.
https://drive.google.com/drive/folders/ ... sp=sharing

A proposito, não sei como colocar planilha aqui, então subi no google drive e colei o link.

Obrigado a todos


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
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Filtro no Listbox com "*"

Mensagem por Reinaldo »

Pelo que pude "ver" o filtro conforme abaixo funciona (retira do listbox itens diferente do pesquisado)

Código: Selecionar todos

Private Sub btnbuscanome_Click()
Dim Nome As String
Nome = Me.txtnome.Text

'APLICAÇÃO DO FILTRO
'ActiveSheet.Range("$A$1:$CD$1069").AutoFilter Field:=8, Criteria1:="*" & Nome & "*"

'CONDICAO PARA CARREGAR A LISTBOX
If ListBox1.ListCount < 1 Then Call carregar_listbox

'PROCURA O VALOR NOME NA LISTBOX
For Item = 0 To ListBox1.ListCount - 1
    If txtnome.Value <> "" Then
        On Error Resume Next
        If ListBox1.List(Item, 6) Like "*" & Nome & "*" Then
        
        Else
            ListBox1.RemoveItem (Item)
            Item = Item - 1
            ListBox1 = Null
        End If
    End If

Next
End Sub
Se não atender, de um exemplo do que executa e o que espera "receber"


fallex
Colaborador
Colaborador
Mensagens: 13
Registrado em: Ter Jul 28, 2020 12:23 pm

Re: Filtro no Listbox com "*" [RESOLVIDO]

Mensagem por fallex »

Olá Reinaldo, boa noite.

Testei novamente e percebi o erro que cometi antes, ao digitar o nome não estava digitando com a primeira letra em maiúsculo, e portanto o filtro na listbox nao funcionava.
Em outras palavras obrigatoriamente eu tenho que procurar por Bruce para dar certo....caso procure por bruce, embora o filtro funcione na planilha não funciona na listbox.

Obrigado Reinaldo pelas informações, e pela grande ajuda.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Filtro no Listbox com "*"

Mensagem por Reinaldo »

... não estava digitando com a primeira letra em maiúsculo...
Pode experimentar:
substitua/altere a linha da rotina:

Código: Selecionar todos

Nome = Me.txtnome.Text
If ListBox1.List(Item, 6) Like "*" & Nome & "*" Then
Para:

Código: Selecionar todos

Nome = UCase(Me.txtnome.Text)
If UCase(ListBox1.List(Item, 6)) Like "*" & Nome & "*" Then


fallex
Colaborador
Colaborador
Mensagens: 13
Registrado em: Ter Jul 28, 2020 12:23 pm

Re: Filtro no Listbox com "*" [RESOLVIDO]

Mensagem por fallex »

Deu certo Reinaldo, obrigado pelas dicas.


paulotuca
Acabou de chegar
Acabou de chegar
Mensagens: 8
Registrado em: Qua Fev 24, 2021 8:43 am

Re: Filtro no Listbox com "*"

Mensagem por paulotuca »

Boa noite!

Algum poderia me ajudar com a busca em um listbox? eu faço a busca e depois que clico em limpar tudo some e não faz mais a busca, e queria saber se e possivel dar dois cliques no listbox e os dados voltar para a page cadastro?


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