No artigo de hoje nós veremos como se faz um formulário de pesquisa avançado com list-box usando o vba do Excel, essa pesquisa avançada funcionara de forma:

Ao digitar o nome (O registro procurado) ou apenas a inicial da letra no campo de pesquisa, todos os dados da planilha com esses caracteres serão listadas na list-box .

Oque é o List box do Excel?

Para os leigos em Excel, o list-box é nada mas nada menos que uma caixa de listagem que pode ser atribuída dentro de um formulário do Excel , com essa caixa de listagem nós podemos puxa dados da planilha e lista esses dados dentro dela.

Mas qual seria a importância do list-box em uma planilha do Excel? eu preciso mesmo disso?

Isso irar depender do tipo de trabalho que você deseja fazer, algumas pessoas gostam de torna seus trabalhos de Excel em uma especie de”Planilhas Inteligentes” e essa ferramente nos ajuda em algumas atividades que são muito útil para quem deseja fazer esse tipo de trabalho.

Eu por exemplo gosto de usar o list-box como caixa de pesquisa ou seja, tenho um formulário e nele a list-box com vários dados da planilha, nela eu aplico um código que permite realizar pesquisas avançadas.

Vantagens e Desvantagens  ao usar o list-box

Eu uso bastante o list-box nos meus trabalhos porque ele deixa minhas planilhas mais profissionais, mas porque vantagens e desvantagens ao usar o list-box?

A vantagem de você usar o list-box é que ele é muito útil para quem precisa realizar listagem de dados sem ter que usar a propiá planilha para isso, só que porem ele possui umas limitações e que para determinados tipos de trabalho ele “não servira”.

Uma dessas limitações é, você só pode ter dentro da list-box 10 colunas , ou seja, se a sua planilha possuir mas de 10 colunas de dados o list-box apenas poderá listar 10 dessas colunas e isso certamente nos deixa limitados.

Mas me corrijam se eu estiver errado rs…

Existem muitas feras em programar em vba, eu mesmo já ouvi de um amigo que ele conseguiu usar mais de 10 colunas no controle listbox, não me pergunte como. Eu não fui a fundo com essa convença mas acredito que isso possa ser verdade.

A outra limitação é:

A quantidade de dados que você possui dentro de sua planilha…

Na verdade não é bem uma limitação você pode ter dados dentro da list-box ate a ultima linha da planilha o problema é que:

 já pensou você com mais de mil registro dentro de sua planilha rs?

Quanto mas dados dentro da sua planilha, mas pesado ficará na hora de carregar esses registros para o listbox , e isso certamente ao meu modo de ver é uma limitação.

Formulário de pesquisa avançada no listbox com Excel VBA

Para adiciona o list-box em seu formulário vá em ferramentas.

imagem11

Click no ícone do list-box e em seguida clicar sobre o formulário e ajuste o tamanho ao seu gosto.

imagem12

Aplicando o código ao list-box

Abra o Excel vba adicione um novo formulário uma text-box e o list-box  e ajuste o seu tamanho.

imagem13

Na propriedades da list-box vamos mudar o columnCount para o numero 3…

O que seria o columnCount?

Ele é a numeração de colunas que você terá dentro da list-box ou seja, se você tiver 10 colunas na planilha você adiciona o numero 10 no columnCount, no meu caso tenho apenas 3 colunas e por isso numerei para o numero 3.

imagem 2

Na Plan1 vamos coloca o seguintes campos:  Nome,Telefone  e Celular , e preenche-los  com  alguns dados.

imagem 3

Em seguida em inserir vamos adiciona um novo módulo.

imagem 4

Copie o código a baixo e cole dentro do módulo

TextoDigitado = UserForm1.TextBox1.Text
Range("a1").Select
 
 Dim ws As Worksheet
 Dim Linha As Integer
 Dim linhalistbox As Integer
 Dim TextoCelula As String
 
 
 Set ws = ThisWorkbook.Worksheets("plan2")
 Linha = 1
 linhalistbox = 0
 UserForm1.ListBox1.Clear

 With ws
 
 While .Cells(Linha, 1).Value <> Empty
 TextoCelula = .Cells(Linha, 2).Value
 If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
 With UserForm1.ListBox1
 .AddItem
 .List(linhalistbox, 0) = Sheets("plan2").Cells(Linha, 1)
 .List(linhalistbox, 1) = Sheets("plan2").Cells(Linha, 2)
 .List(linhalistbox, 2) = Sheets("plan2").Cells(Linha, 3)
 .List(linhalistbox, 3) = Sheets("plan2").Cells(Linha, 4)
 .List(linhalistbox, 4) = Sheets("plan2").Cells(Linha, 5)
 .List(linhalistbox, 5) = Sheets("plan2").Cells(Linha, 6)
 .List(linhalistbox, 6) = Sheets("plan2").Cells(Linha, 7)
 .List(linhalistbox, 7) = Sheets("plan2").Cells(Linha, 8)
 .List(linhalistbox, 8) = Sheets("plan2").Cells(Linha, 9)
 .List(linhalistbox, 9) = Sheets("plan2").Cells(Linha, 10)
 
 
 linhalistbox = linhalistbox + 1
 End With
 
 End If
 Linha = Linha + 1
 
 Wend
 
 End With

Uso esse evento para que a pesquisa aconteça em tempo real, com forme eu for digitando os caracteres me trazendo os resultados mais próximos ate encontrar o registro desejado.

Dê um duplo clique dentro da text-box e no canto superior direito vamos adiciona o evento KeyUp.

image5

Dentro do evento keyUp vamos chamar o nome da sub que fizemos no módulo, No meu caso é pesquisanome.

image6

Agora de um duplo Click dentro do formulário e no canto superior direito vamos mudar para o evento initialize e novamente chama a nossa sub dentro desse evento.

Esse detalhe é muito importante então faça com muita atenção!

Vamos usar o evento para que o formulário ao inicializar ele automaticamente carregue os dados da sua planilha para o list-box.

image7

image8

Agora basta executar o trabalho e pronto já estará funcionando.

image 9image 10

Teve alguma duvida sobre como fazer esse procedimento? click no botão e baixe a planilha de referencia do artigo!

→Clique Aqui Para Baixar O Projeto De Referencia

Tags:

Sobre o Autor

Welisson Silva
Welisson Silva

Analista de Sistemas, trabalha com TI desde 2014. Especializado em Vendas Online, desenvolvedor, programador, guitarrista e entusiasta de tudo que envolva tecnologia.

33 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *