Formulário com Filtro de Palavras
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
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!!
ListBox Detalhes 2
Neste post você verá:
>> Como preencher um listbox usando VBA
>> Como ordenar um listbox
>> Como remover um item no listbox
>> Como limpar um listbox
>> Como enviar dados do listbox para o excel
Esse post , listbox detalhes 2, é a segunda continuação sobre o tema listbox e sobre algumas dúvidas que as pessoas tem a respeito do assunto.
Lembrando que você pode acessar o post exemplo de listbox e abaixar uma planilha modelo e retirar algumas dúvidas.
Siga o post abaixo para ver como usar listbox com VBA
.
Observação: Na imagem abaixo você pode ver como colocar borda no listbox
Observação2: Em ColumnWidths você pode alterar a largura das colunas, exemplo: “50 pt;50 pt”
___________________________________________________
>> Como Preencher Um ListBox com VBA
Um detalhe sobre o código abaixo é que mostra como inserir textos em 2 colunas do listbox.
Ou seja .List(0,0)=”teste” significa que na primeira linha e primeira coluna terá o valor “teste”
Caso queira ver mais detalhes e um exemplo prático assista ao vídeo
With Me.listBox1 .AddItem .List(0, 0) = "teste" .List(0, 1) = "teste1" End With
_________________________________________________
Como Ordenar Um Listbox Com VBA
Tentei deixar o código abaixo o quanto mais fácil para entender, você pode ver no vídeo o seu funcionamento.
Sub Ordenar_listbox itemFinal = listBox1.ListCount - 1 'verifica linha a linha todos os itens For itemAtual = 0 To itemFinal - 1 'pra cada item do listbox, será verificado todos os itens novamente For itemPosterior = itemAtual + 1 To itemFinal 'verifica se o item atual verificado é maior que seu sucessor If listBox1.List(itemAtual) > listBox1.List(itemPosterior) Then 'passa o valor do listbox para uma variavel e assim trocar os valores do listbox temporario = listBox1.List(itemPosterior) listBox1.List(itemPosterior) = listBox1.List(itemAtual) listBox1.List(itemAtual) = temporario End If Next itemPosterior Next itemAtual End sub
_________________________________________________
Como Remover Um Item No ListBox
Para fazer a remoção de uma linha(item) no listbox, temos que pegar qual linha está selecionada e usar o RemoveIt
listBox1.RemoveItem (listBox1.ListIndex)
_________________________________________________
Como Limpar Um ListBox
Bem o comando é bem simples:
listBox1.Clear
_________________________________________________
Como Enviar Dados do Listbox Para O Excel
No exemplo abaixo estou enviando todos os itens do listbox para o Excel
Como no vídeo abaixo o nosso exemplo de listbox possui quatro colunas, estou usando: (i, 0) a (i, 3)
Inicio verificando a ultima linha usada no excel e passo todas as linhas e colunas do listbox
Sub EnviarExcel qtdeItens = listBox1.ListCount ultimaLInha = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row For i = 0 To qtdeItens - 1 Sheets(1).Cells(ultimaLInha + 1, 1).Value = listBox1.List(i, 0) Sheets(1).Cells(ultimaLInha + 1, 2).Value = listBox1.List(i, 1) Sheets(1).Cells(ultimaLInha + 1, 3).Value = listBox1.List(i, 2) Sheets(1).Cells(ultimaLInha + 1, 4).Value = listBox1.List(i, 3) ultimaLInha = ultimaLInha + 1 Next End Sub
_______________________________________________
Segue vídeo demostrativo
Listbox no Vba – Detalhes 1
>> Como inserir cabeçalho com listbox no vba
>> Como inserir colunas no listbox
>> Como ver a quantidade de itens no listbox
>> Como saber a linha selecionada no listbox
Apesar de já ter um post sobre listbox no vba com exemplo vou detalhar mais sobre o assunto, pois creio que talvez não fique claro e pretendo detalhar mais sobre listbox sendo que este post esta será a primeira parte.
Na imagem abaixo demonstro onde alterar os parâmetros necessários do listbox para poder inserir o cabeçalho, o número de colunas e o preenchimento.
Mais abaixo coloco o vídeo para detalhar …
COMO INSERIR CABEÇALHO NO LISTBOX
Após inserir o componente de listbox deve-se clicar em cima do componente do listbox e alterar o parâmetro ColumnHeads para True. Você irá perceber que no momento da alteração o listbox irá exibir o contorno do cabeçalho.
Outro detalhe que deve ser visto é o preenchimento dos dados do listbox, conforme na imagem no rowsource eu coloquei os dados sem o cabeçalho.
_____________________________________________________
COMO INSERIR COLUNAS NO LISTBOX
Deve-se clicar em cima do componente do listbox e no parametro ColumnCount inserir o número de colunas necessárias.
_____________________________________________________
COMO VER A QUANTIDADE DE ITENS NO LISTBOX
Para ver a quantidade de itens basta inserir o comando: “nome do listbox”.”ListCount”
Exemplo:
numItens = ListBox1.ListCount
____________________________________________________
COMO SABER A LINHA SELECIONADA NO LISTBOX
Para ver a linha selecionada basta usar o comando:: “nome do listbox”.”ListIndex”
Exemplo:
linhaSelecionada = ListBox1.ListIndex
__________________________________________
Segue vídeo demonstrativo
Para ajudar ainda mais segue modelo para download gratuitamente.
Exemplo: Preenchendo – ListBox Vba
Preenchendo listbox com rowsource
Coloco abaixo duas maneiras, uma delas demonstro como fazer o preenchimento através do próprio vba e a outra maneira através da propriedade do listbox vba no formulário.
Modo 1 – pelo VBA:
Sei que existe várias maneiras de preencher um listbox, mas coloco aqui um código que gostei pela forma simples e idéias agregadas que achei em pesquisas.
Abaixo segue link para download da planilha com código
Modo 2 – pela propriedade:
Agora se você não gosta de programação vba e deseja um preenchimento mais dinâmico do listbox, aconselho então à adicionar a propriedade no próprio listbox do formulário:
Até a próxima
Segue ajudar ainda mais segue link para duas planilhas de listbox que estão compactadas:
Categorias
- 1- PRIMEIROS PASSOS (24)
- 2- CONCEITOS (1)
- 3- TODOS OS CÓDIGOS (34)
- Abrir Arquivo (3)
- Artigos VBA (13)
- banco de dados (1)
- Barra de Progresso (1)
- Célula (1)
- Códigos Avançados (14)
- Códigos Desempenho (24)
- Códigos Design (27)
- Códigos Detonados (16)
- Códigos Prontos (38)
- Email (1)
- Espaço (2)
- fórmulas (1)
- Fechar planilha automático (1)
- Formatação (1)
- Inputbox (1)
- Linha (5)
- Listbox (1)
- Matriz / Vetor (1)
- mensagem de alerta (1)
- Menu (1)
- office (1)
- Pausar (2)
- planilha (4)
- Rodapé (1)
- Salvar (2)
- Selecionar Planilha (1)
- Sem categoria (1)
- Senhas (3)
- Tabela Dinâmica (1)
- Tela (2)
Posts recentes
Principais mensagens
- Dicas de autofiltro no vba
- Torne-se Membro
- Trabalhar com horas no VBA - Exemplo Jornada Ponto
- Como Carregar Imagens Dentro da Propria Planilha
- Validar e Formatar CPF compacto e funcional
- Cores No VBA - Tutorial
- Icones para formulários
- Programar Abertura de Planilha Automaticamente
- Variáveis de objeto no vba
- Excluir imagens do Excel (uma ou mais guias)