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








