Vamos lá:1. Faça o download da lista de dados aqui.
2. Note que o filtro já está aplicado no cabeçalho, caso a sua planilha não tivesse, você deve aplicar o filtro para continuar.
3.Clique na guia Desenvolvedor e no botão Modo de Design, o que colocará o Excel no modo de desenvolvimento para poder colocar componentes de formulário na planilha.
3. Clique na guia Desenvolvedor, no botão Inserir e selecione Caixa de Texto.
4.Coloque as caixas de texto acima dos nomes de cada uma das colunas conforme a figura.
5.Clique sobre a caixa de texto da coluna código e nomeie-a como Codigo na caixa de nome, repita a operação para as caixas de texto seguintes, como Loja, Produto, Estoque e Preco.
6.Clique na guia Desenvolvedor e desmarque o botão Modo de Design.
7.Ainda na guia Desenvolvedor clique no botão Visual Basic.
8.Clique no botão Project Explorer, selecione o projeto VBAProject (Lista de dados.xlsm), clique em Plan1 neste projeto conforme na figura.
9.No lado direito clique na guia de código fonte digite o código abaixo:
Private Sub Codigo_Change() If Codigo.Text "" Then Selection.AutoFilter Field:=1, Criteria1:="=" & Codigo.Text Else Selection.AutoFilter Field:=1 End If End Sub Private Sub Estoque_Change() If Estoque.Text "" Then Selection.AutoFilter Field:=4, Criteria1:="=" & Estoque.Text Else Selection.AutoFilter Field:=4 End If End Sub Private Sub Loja_Change() Selection.AutoFilter Field:=2, Criteria1:=CStr("*" + Loja.Text) + "*" End Sub Private Sub Preco_Change() If Preco.Text "" Then Selection.AutoFilter Field:=5, Criteria1:=">=" & Replace(Preco.Text, ",", "."), Criteria2:="<=" & Replace(Preco.Text + 0.0099999, ",", ".") Else Selection.AutoFilter Field:=5 End If End Sub Private Sub Produto_Change() Selection.AutoFilter Field:=3, Criteria1:=CStr("*" + Produto.Text) + "*" End Sub Private Sub Comissao_Change() If Comissao.Text "" Then Selection.AutoFilter Field:=6, Criteria1:=">=" & Replace(Comissao.Text / 100, ",", "."), Criteria2:="<=" & Replace(Comissao.Text / 100 + 0.0099999, ",", ".") Else Selection.AutoFilter Field:=6 End If End Sub Private Sub txtAte_Change() If txtData.Text "" And IsDate(txtData.Text) And IsDate(txtAte.Text) Then Selection.AutoFilter Field:=7, Criteria1:=">=" & Format(txtData.Text, "mm/dd/yyyy"), Operator:=xlAnd, Criteria2:="<=" & Format(txtAte.Text, "mm/dd/yyyy") Else Selection.AutoFilter Field:=7 End If End Sub Private Sub txtData_Change() If txtData.Text "" And IsDate(txtData.Text) And IsDate(txtAte.Text) Then Selection.AutoFilter Field:=7, Criteria1:=">=" & Format(txtData.Text, "mm/dd/yyyy"), Operator:=xlAnd, Criteria2:="<=" & Format(txtAte.Text, "mm/dd/yyyy") Else Selection.AutoFilter Field:=7 End If End Sub
Pronto! Agora sempre que você digitar os dados nos campos TextBox você terá os filtros sendo aplicados diretamente nestas colunas.
Baixe a planilhaAbraço
Marcos Rieper