Aplicar Filtro em ListBox no VBA - Filtro Avançado | VBA Academy
HTML-код
- Опубликовано: 7 сен 2024
- Curso de VBA do Zero ao Avançado - Assine por apenas R$49,90 por mês sem fidelidade👇🏼
data7academy.c...
Ao fazer sua assinatura hoje você terá acesso imediato a:
✅ Curso de VBA Completo (Do básico ao avançado)
✅ Curso de Excel Completo (Do básico ao avançado)
✅ Plano de Estudos Personalizado
✅ Lista de Exercícios
✅ Desenvolvimento de Sistemas e Programas Práticos em VBA
✅ Integração do VBA com Pacote Office (Word, Power Point, Access e Outlook)
✅ Integração do VBA com MySQL Online (Banco de dados online)
🎁 Lives e Eventos ao Vivo da DATA7 Academy (Todas as edições da Semana VBA na Prática)
🎁 Curso Completo de Web Scraping (Bônus por tempo limitado)
🎁 Curso Básico de Power BI (Bônus por tempo limitado)
🎁 Como ter um perfil atrativo no Linkedin (Bônus por tempo limitado)
🎁 Inglês para Entrevistas (Bônus por tempo limitado)
📃 Certificado de conclusão
➜ Conecte-se com a DATA7 Academy nas redes sociais:
• Instagram: / data7academy
• LinkedIn: / data7academy
• Facebook: / data7academy
• Telegram: t.me/+TDxqvRIc...
• E-mail: vbaacademy@vbaacademy.com.br
Curso de VBA do Zero ao Avançado - Assine por apenas R$49,90 por mês sem fidelidade👇🏼
data7academy.com.br/?origem=yt_org_filtroavançadolistboxvba
Devo dizer que os vídeos de vocês tem os códigos mais limpos, sem enormes gambiarras que vejo por aí. não fiz comparativos de velocidade, mas certamente devem rodar bem melhor. Além de facilitarem muito a compreensão.
Obrigado pelo reconhecimento amigo, abraços!
Genial solicitação muito simples utilizando uma ferramenta que já tem no Excel, Parabéns mesmo!!
Justo lo que buscaba, tendré que aprender portugués ahora
Parabéns!,. São ótimas suas aulas, estou aprendendo muito de forma rápida!. E de todas as formas que já tentei fazer isso, a forma que você ensinou vou a que deu certo na primeira!.
Fico feliz em tê-lo ajudado.
meu parceiro, você me ajudou a pampaaaaa!
Excelente e obrigado
Sensacional!
Obrigado amigo, continue nos acompanhando. Abraços!
Excelente vídeo, parabéns pelo conteúdo. Limpo, direto e informativo!!!
Maravillha Mano!!!
Excelente, Obrigado
Será possível fazer um video no caso da usetform ter um comando para deletar ou retificar na tabela de dados na primeira planilha?
Nesse exemplo, você poderia mostrar como fazer para que, depois de filtrar, clicar em um dos selecionados e carregar os dados num outro formulário, tipo, como uma textbox com link para abrir o whatsapp web. 💪
Excelente vídeo, professor.
Gostaria de compartilhar algo que fiz (em relação ao filtro) que me atendeu, pelo menos até agora. Pode ser que ajude mais alguém.
Li relatos de pessoas nos comentários dizendo que o filtro funcionou nas primeiras vezes e depois, quando apagava a combobox, a listbox não voltava com a lista completa. Minha solução foi a seguinte: Eu escrevi uma sub com o mesmo código usado para carregar a listbox assim que a userform é iniciada. Então usei o seguinte código no evento change da combobox (Se estiver usando textbox, basta trocar o objeto no código):
Private Sub ComboBox1_Change()
Application.ScreenUpdating = False
Planilha1.Range("AA2") = ComboBox1
If Me.ComboBox1.Value Empty Then
Call filtro
Else
Call Lista_Geral
End If
Application.ScreenUpdating = True
End Sub
Chamei de "Lista_Geral" a sub que traz o código que descrevi acima. Então, no caso da combobox (ou textbox) se encontrar vazia, prontamente ele traz toda a lista que a listbox havia carregado inicialmente.
Espero que meu comentário possa ajudar! :)
Excelente técnica, excelente solução! Parabéns pelo canal!!!
buen dia!! muy buen video, como puedo hacer para filtrar entre fechas y lo que vendio una persona segun su estado("cobrado";"pendiente") etc que lo selecciono de un combo..muchas gracias
EXCELENTE AULA
Pessoal, para resolver o erro "O intervalo de extração tem um nome de campo ausente ou inválido" o intervalo para critério e o intervalo para onde os dados serão copiados devem ser idênticos ao cabeçalho da tabela base.
Não funcionou. Esse filtro se resumo a colunas, pois tenho 68 colunas, mas fiz o filtro e a outra tabela tb com os mesmos nomes de campos e o mesmo numero de colunas, mesmo assim não funcionou. :(
Tirei Acento, espaço no título das colunas também.
Top demais seu canal!
Existe alguma forma de criar uma palavra chave em uma combo box, como por exemplo: Apareceria na combo box varias palavras "Arroz", "Feijão".... e nessa palavras chaves fossem atrelados itens a serem filtrados EX: Palavra chave = Arroz ----> Atrelado a "Arroz" ----> Arroz tipo 1, Arroz tipo 2, Arroz tipo 3, e "Feijão" -----> Atrelado a "Feijão" ----> Feijão Preto, Feijão Branco, Feijão Carioca..... e quando eu clicasse em filtrar ele me trouxesse todos os valores que estão atrelados a palavra chave, no range de uma coluna.
Show de aprendizagem!!!
Seria interessante se considerasse a sugestão de um cadastro de filmes com banco de dados access!!!
Ótima explicação. Me inscrevi
Olá Israel....acompanhei seu código...e fui fazendo em um projeto meu....só alterando os endereços de planilha....mas com atenção e segui fielmente... quando manda carregar sem o filtro na planilha de suporte, OK, carregou.... Mas quando eu coloco um único filtro aí retorna somente com a primeira linha da lista.... não importa qual filtro colocar ele volta sempre a mesma coisa....e acho que deveria limpar essa planilha de suporte....que nomeei como copia-base
Bom dia otima aula, gostaria de saber como colocar um filtro em uma pesquisa no Excel vba?
Obrigado
Ótima aula, parabéns!
Excelente Aula.
Consigo usar esse filtro quando os dados que estão dentro da ListBox vem do Access??
Obrigado.
Rapaz, ficou ótimo. Como ficaria se ao invés de Textbox utilizasse Combobox? Tem como fazer um exexplo. Agradecido.
Olha fiz um programa e o único filtro que deu certo foi o que vc ensinou eu ainda estou aprendendo Excel mas sua aula foi essencial para meu programa mas gostaria de tirar uma dúvida será que teria algum vídeo seu explicando fazer esse filtro sem precisar de outra aba para cópia e já fazer na planilha existente fazer o filtro?
Caro professor Israel. Sou um grande admirador. Acompanho todas as suas aulas no RUclips. Este ano participei integralmente do seu curso Online de "VBA na prática". Desde então estou tentando aplicar os conhecimentos adquiridos. Posteriormente encontrei 03 aulas excelentes sobre o mesmo assunto: "Aplicar Filtro em ListBox" postadas em seu canal no final de 2018. Quando tento seguir o passo a passo, na primeira aula tudo ocorre conforme suas explicações. Na segunda aula, quando é criado o módulo, é que ocorre o problema: a linha de código "Set base = Planilha2.Range("A1").CurrentRegion" não funciona, ou seja, não seleciona os dados. Executei o código inúmeras vezes passo a passo com "F8" e observei que que funciona perfeitamente no UserForm (conforme a aula 01) mas a mesma linha de código não faz nada dentro do módulo (explicado na aula 2).
Vou colocar os códigos aqui para ver se você pode me dizer qual o problema:
Private Sub UserForm_Initialize()
Dim base As Range
Dim nome As String
Set base = Planilha2.Range("A1").CurrentRegion
nome = "'" & Planilha2.Name & "'!"
ListBox1.RowSource = nome & base.Address
End Sub
Sub FiltroInativos()
Dim base As Range
Dim crt As Range
Set base = Planilha2.Range("A1").CurrentRegion
Set crt = Planilha2.Range("G1:I2")
base.AdvancedFilter xlFilterCopy, crt, Planilha2.Range("G4:I4")
End Sub
Excelente obrigado.
você poderia filtrar por intervalo de datas com este mesmo método?
deixa a planilha para baixar pra mim fica mais tranquilo para aprender pois não movimento o braço esquerdo devido a o avc que tive, pfv grato!
Olha essa técnica para mim está sendo a melhor mas não sei o que está acontecendo quando faço pela primeira vez o processo de filtrar filtra normalmente mas vou tentar outras vezes não funciona o que pode ser pensa que já assisti essa aula sua umas 20 vezes e refiz tudo várias vezes
Bom dia profesor parabéns, pelas aulas top tenho uma pergunta tem como fazer esse mesmo processo e acrescentar doos optionbutaon .?
bom dia o meu apresenta um erro. ele nao consegue buscar o rowsource.
Sub filtro()
Dim base As Range
Dim crt As Range
Dim filtrada As Range
Dim nome As String
Set base = Planilha1.Range("A4").CurrentRegion
Set crt = Planilha1.Range("A1:L2")
base.AdvancedFilter xlFilterCopy, crt, Planilha5.Range("A1:L1")
Set filtrada = Planilha5.Range("A1").CurrentRegion
nome = "'" & Planilha5.Name & "!'"
HOME.casos.RowSource = nome & filtrada.Address
End Sub
A planilha esta filtrando normal, mas nao retorna no listbox os valores filtrado. apresenta erro 380. não foi possivel definir a propriedade RowSource
Ola excelente aula!! gostaria que tirasse essa duvida quando faço esse mesmo procedimento junto com meu programa acontece um erro "erro em tempo de execução '1004' " e diz nome do campo ilegal ou ausente no intervalo da extração.
acontece isso comigo. conseguiu resolver?
Lígia, para resolver esse problema intervalo para critério e o intervalo para onde os dados serão copiados devem ser idênticos ao cabeçalho da tabela base.
Parabéns! Show de aula! 👏👏👏👀Você dá aula de VBA também ?
Boa tarde, sei que a aula é antiga, mas poderia mandar o link da aula anterior?
Muito bom seu vídeo. Conseguiu fazer aqui e aplicar os filtros em uma planilha no meu trabalho. Porém, tenho uma dúvida.
Eu preciso selecionar o item pesquisado e "copiar" com o mause para levar esse item para outro lugar. Porém não tem essa função. É possível liberar essa função nesse formulário? Em caso afirmativo, Como fazer?
Israel, boa tarde.
Se eu não quiser a Listbox, apenas quiser digitar os critérios e clicar enter
É possível ? Poderia me ajudar ?
Obrigado, e parabéns pelo vídeo.
Olá, teria disponível o link da aula 01 ? Pois não entendi essa parte da variável "Nome"
O filtro só funciona com letras? estou tentando fazer o filtro com números porém ele não está funcionando, como exemplo nessa aula, se eu quisesse fazer o filtro pelo código, ele funcionaria normalmente?
Fala Israel, blz?
Uma duvida, quando eu faço filtro normal de um número numa coluna do excell o filtro é feito por valores próximos correto? Ex: se eu digitar o numero 2, ele fará o filtro de todos os números que contém o 2 (2; 22; 200; 102... e por aí vai). é possível fazer que o filtro avançado faça esse tipo de filtro? Quando eu digitar no critério o numero 2 o código me traga os nomes que contem o numero 2? (N sei se ficou claro...). Obrigado!
Quantas registros possuem na sua planilha ? Perfomaria bem uma planilha com 175.000 registros?
👍
E se eu quiser que já traga pra mim esses filtro sem eu precisar digitar? Tipo, abro uma Userform que seja dos alunos de Farmacia, ele ja tras pra mim na ListBox apenas os alunos de Farmacia, como fazer?
amigo, eu sigo todos os passos. quando vou usar o filtro (pra testar) na área especificada na planilha4, quando roda a primeira vez funciona bem. porém da segunda em diante não funciona mais. só copia os cabeçalhos.
Sub Filtro()
Dim base As Range
Dim crt As Range
Set base = Planilha3.Range("A1").CurrentRegion
Set crt = Planilha3.Range("F1:H2")
- eu verifiquei na verificação imediata que o valor dessa linha não apresenta endereço de celular e sim "verdadeiro". é normal?
base.AdvancedFilter xlFilterCopy, crt, Planilha4.Range("A1:C1")
End Sub
só vai para a planilha4, o cabeçalho da lista e não a lista completa.
alguém poderia dizer qual o problema?
Olá, se ele traz apenas o cabeçalho significa q não há dados para serem filtrados. Verifique o intervalo para critérios, provavelmente deve ter alguma célula que está com um espaço em branco, por isso ele nao traz nada. Esse problema é bem comum.
@@DATA7Academy valeu pela dica. olha, vc teria alguma video aula ensinando a configurar o botão imprimir, para impressora de 58 collunas? não encontrei em vídeo nenhum. ficaria grato se fizesse essa video aula. e acho que teria bastante visualizações!
Realizei todo o procedimento do vídeo, porém está me retornando essa mensagem sempre que tento realizar uma nova pesquisa. "O intervalo de destino não é grande o suficiente para acomodar todas as linhas copiadas. Os dados abaixo do intervalo de destino serão perdidos. Continuar a copiar mesmo assim?" Como posso tratar ? Aconteceu com mais alguém?
não funcionou meu comando de filtro
Sub filtro()
Dim base As Range
Dim crt As Range
Set base = Plan6.Range("b1").CurrentRegion
Set crt = Plan6.Range("ab1:az2")
base.AdvancedFilter xlFilterCopy, crt, Plan5.Range("a1:w1")
End Sub
diz que intervalo de extração tem um nome de campo ausente ou invalido. Já me virei do avesso e não consigo enxergar o erro me ajuda por favor
repetindo pela enésima vez consegui!!!!!!!! você me ajudou pra caraaaaa.........sou muito grata! Atenção é tudo!
@@karinereginakaka7774 Qual foi a sua solução? estou com mesmo problema.
@@JulioFelipe041 Tbm quero saber, estou com o mesmo problema
Tbm estou com o mesmo problema! Pode me ajudar?
Pessoal, para resolver esse problema intervalo para critério e o intervalo para onde os dados serão copiados devem ser idênticos ao cabeçalho da tabela base.
Estava funcionando tudo bem. Hoje quando fui usar recebi esse erro.
Run-time error ‘1004’
The extract range has a missing or invalid field name
Voce poderia por favor me dizer o porque?
Para fazer esse filtro a tabela na planilha deve ter obrigatoriamente cabeçalho?
Amigo, ótima aula! Uma dúvida minha...
Sub filtro()
Dim base As Range
Dim crt As Range
Set base = Planilha2.Range("A1:H1048576").CurrentRegion
Set crt = Planilha2.Range("V1:AD1")
base.AdvancedFilter xlFilterCopy, crt, Planilha1.Range("A1:I1")
End Sub
Estou recebendo erro 1004 na depuração, "O intervalo de extração tem um nome de campo ausente ou inválido", alguma sugestão?
Boa tarde, o intervalo para critérios, o intervalo de destino e a base de dados devem ter exatamente os mesmos cabeçalhos.
Tenho assistido seus vídeos sobre VBA e aprendido muito, mas sempre acho que está faltando algo - insegurança minha? Talvez?. Já usei o filtro avançado no excel, sem macro, e recebo a informação que o resultado da consulta somente aparece na planilha (pasta) aberta e não em outra no mesmo arquivo. Vamos a pergunta: Posso fazer consultas - filtro avançado - em dados de constantes em diversos arquivos fechados, cuja base é comum a todos eles?. Assisti outro vídeo seu, em que você ensina a buscar informações em arquivos fechados. Minha base de dados está distribuida em 7 (sete) arquivos, contando com aproximadamente quinhentas mil linhas em cada arquivo. Estou pesquisando isto também em SQL e no Power Query, através de vídeos no RUclips. Desculpe se prolonguei demais minha pergunta.
boa noite, como é que faz pra colocar um botao, e esse botao limpar as textbox e voltar o conteudo da listbox
Bom dia tudo bem ?
Poderia me ajudar ?
depois que coloquei no initialize o comando para limpar o filtro ,sempre que tento definir algum valor na textbox do formulario dá o erro "91" e fala que o bloco witch não foi definido ,quando peço para depurar me mostra essa linha abaixo
UserForm1.ListBox1.RowSource = nome & filtrada.Address
da pra fazer sem usar USEFORME, fazer direto na planilha?
Meu filtro não está filtrando números
O meu também não, tenho filtro por nome de fornecedor e data, se eu filtrar pelo fornecedor vai de boa. Quando filtro por data, não acontece nada. PQP
Esse filtro funciona com datas?
Teria como adaptar a filtragem de um período de duas datas nesse processo?
Teria como adaptar. Para isso vc deve colocar uma coluna adicional com uma fórmula, e essa formula verifica se as datas em questão estão dentro do intervalo, se sim traz um valor verdadeiro na coluna. Então coloque essa mesma coluna no intervalo para critério e deixe o filtro fixo como verdadeiro.
Quando eu digito na text box a listbox some, alguém poderia me ajudar?
Ótima aula. O meu estava dando tudo certo mas de repente parou começou a fazer o filtro mas quando eu apago a pesquisa ele não mostra todos novamente
Verifique o intervalo para critério, ou a propriedade Row Source nao está adequada levando os dados da planilha para listbox
@@DATA7Academy Tinha modificado a coluna A, converti os para números e acabou não mostrando mais no relatório, refiz e deixei como estava antes "Numero armazenado como texto" voltou ao normal. deu certo.
@@DATA7Academy Queria colocar no meu relatório o total dos valores dos dados filtrados na listbox. Você tem um vídeo sobre isso?
Boa tarde Professor o meu esta dando o seguinte erro:
Na verificação imediata aparece assim:
Erro de Compilação: o argumento não é opcional
Sub Filtro()
Dim base As Range
Dim crt As Range
Dim filtrada As Range
Dim nome As String
Set base = Planilha1.Range("A1").CurrentRegion
Set crt = Planilha2.Range("V1:AO2")
base.AdvancedFilter xlFilterCopy, crt, Planilha2.Range("A1:T1")
Mano me ajuda estou com o mesmo problema de todos, poxa cara faz um vídeo explicando e resolvendo o erro
Tem mais vídeo no canal sobre filtro avançado, da uma procurada aí amigão
@@DATA7Academy minha planilha nao pesquisa também, quando coloca o nome da pessoa ela fica para nao faz nada
Fiz tudo certo, porém para mim só aparece a primeira coluna
Bom dia. Tenho uma duvida.
Meu programa vinha funcionando idêntico ao mostrado no vídeo, porém, no momento de chamar o filtro de forma automática "Call Filtro", o programa apresenta o erro "Erro de compilação. Uso invalido da propriedade"
O que pode ser?
Coloque aqui a linha do código q da o erro para analisarmos
@@DATA7Academy Consegui resolver, apenas alterei o nome do filtro e funcionou. Obrigado.
Existe alguma vídeo alguma vídeo aula ensinando a capturar os dados da listbox e alterando na minha planilha inicial, onde constam todos os dados anterior a filtragem?
Dá pra fazer em combobox?
Parte 3 | ruclips.net/video/GL6ZBqQzTXE/видео.html
Pode me ajudar? Eu tento filtrar por números, mas não dá certo. Eu só preciso desse filtro. Quando filtro por estado, consigo , mas, por número ele não copia para a outra aba.
Provavelmente os números estão em formatos de texto por estarem em textbox , combobox. Você deve converte-los para números ao aplicar o filtro.
Professor, eu tentie fazer o filtro com data e número, e ele apenas está funcionando para texto :x tem alguma solução?
Eu tentei para data e também não consigo. Achei o erro quando depois de inserir a data na textbox a célula apesar de configurado para data não entende como tal. Se eu vou nessa célula com duplo clique e dou um enter ela assume o formato certo é o filtro funciona.
Não estou conseguindo carregar corretamente a listbox, não puxa a variável filtrada.
Boa tarde
tem como da uma ajuda ?
o meu está dando erro : o intervalo de extração tem um nome de campo ausente ou invalido ou o método AdvancedFilter da classe range falhou.
Sub FILTRO()
Dim Base As Range
Dim CRT As Range
Dim filtrada As Range ' --------------
Dim nome As String
Set Base = Plan5.Range("a7").CurrentRegion
Set CRT = Plan5.Range("aa1:am2")
Base.AdvancedFilter xlFilterCopy, CRT, Planilha1.Range("aa2:mm2")
"" o erro para aqui"
Set filtrada = Planilha1.Range("aa2").CurrentRegion
nome = "'" & Planilha1.Name & "'!"
UserForm1.ListBox1.RowSource = nome & filtrada.Address
Boa tarde, me envie a tabela no e-mail para eu ver melhor, o código está certo, deve ser algo na disposição das tabelas. ha-ell@hotmail.com
@@DATA7Academy Boa tarde! Ótima aula realmente tá de parabéns, aula muito bem explicada e deu para aproveitar muito! Mas o meu também está dando o mesmo problema nessa linha de "Base.Advanced...", como vc conseguiu resolver esse problema? Desde já agradeço!
@@moacijunior2840 Olá, me envie a planilha de vcs para eu ver o que está acontecendo ha-ell@hotmail.com. no e-mail deixe explicado sobre isso para eu saber do que se trata pois recebo dezenas de e-mail todos os dias.
Boa tarde Israel. Tudo bem? Muito Boa suas aulas. Estou começando a aprender VBA, essa ferramenta incrível. Preciso de uma ajuda sua se possível. Tenho uma formula que não consigo chegar a um resultado correto.
Ex.: Tenho duas variáveis: ( a,b) onde os números podem ser negativos. Tentei usar a formula: if, then, elself e else. Mas nada acontece.
Obrigado e parabéns pelas aulas..ja aprendi muito.
Ivanfelip@gmail.com
Boa tarde, Professor! Eu inserir esse código na minha planilha,mas da um Erro de tempo de execução '-2147467259 (80004005)': Erro de automação Erro não especificado, pode me ajudar a resolver?