Hoje quero mostrar um código simples, mas de muita utilidade que irá acrescentar muito em sua planilha: um filtro de palavras.

Já utilizei diversas vezes (acrescentando filtros e aumentando as opções), mas a ideia é mostrar a estrutura do código e deixar conforme a criatividade de cada um.

Encontrei este código no TomasVasquez e alterei para ficar mais simples o entendimento, espero que vocês gostem.

 

Formulário com Filtro de Palavras

filtro de palavras

Código de funcionamento

 

Private textoDigitado As String

Private Sub TextBox1_Change()
TextoDigitado = TextBox1.Text
Call PreencheLista
End Sub

Private Sub UserForm_Initialize()
'Ao iniciar o formulario ira chamar o procedimento PreencheLista
Call PreencheLista
End Sub

Private Sub PreencheLista()
TextoDigitado = TextBox1.Text
'código que irá filtrar os nomes
Dim linha As Integer
Dim TextoCelula As String
linha = 1
'limpa os dados do formulário
ListBox1.Clear
'Irá executar até o último nome
While ActiveSheet.Cells(linha, 1).Value <> Empty
'pega o nome atual
TextoCelula = ActiveSheet.Cells(linha, 1).Value
'quebra a palavra atual pela esquerda conforme a quantidade de letras digitadas e compara com o texto digitado
If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
'se a comparação for igual será adicionado no formulario
ListBox1.AddItem ActiveSheet.Cells(linha, 1)
End If
linha = linha + 1
Wend
End Sub

 

Código de funcionamento – Opção 2

(Sugestão de Ricardo Marques)

Com esta alteração de código a pesquisa não ficará limitada somente a esquerda do texto, sendo possível pesquisar a partir de toda palavra.

Para isso substitua a linha do código acima:  

“If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then”

Por

If InStr(UCase(textocelula), UCase(textodigitado)) > 0 Then

 

Vídeo Demonstrativo

Arquivo Exemplo

 

Baixar arquivo exemplo: Filtrando Palavras no Listbox

Obs.: Acessando o site do Tomas Vasquez é possível encontrar o filtro de texto aprimorado com mais colunas e etc.
Não coloquei no artigo, pois a idéia é trazer algo mais simplificado!!