Quanto trabalhamos com tabelas uma das opções mais utilizadas para analisar os dados é recorrer ao filtro automático, que nos permite analisar de forma rápida e eficiente a informação pretendida.
Atualmente dispomos da função FILTRAR [FILTER] que permite obter um intervalo de dados filtrado de acordo com o critério ou critérios que pretendemos, contudo, o resultado não é definido diretamente na tabela.
Neste artigo vou mostrar-te como pode então filtrar a tabela diretamente, e instantaneamente com uma caixa de texto que permite pesquisar qualquer valor e devolver os dados de imediato!
Utilizar os controlos para filtrar
Para filtrar a tabela vamos utilizar controlos ActiveX que permitem interagir com a aplicação, através de código VBA.
Vou começar por aplicar 3 comandos de opção (Botões de Opção) e uma Caixa de Texto.
Os botões de Opção vão ser uteis para selecionar o campo pretendido para aplicar o filtro e a Caixa de Texto será utilizada para fazer a pesquisa do termo de forma instantânea.
Acedemos ao Menu Programador e ao botão Inserir para inserir os comandos. Caso não tenhas o menu Programador, deves aceder ao menu Ficheiro e às Opções do Excel, escolhendo a opção de Personalizar o Friso.

Neste caso começo por inserir um botão de opção e de seguida acedemos às propriedades do botão.

Nas propriedades alteramos o nome do objeto [Name] e a sua apresentação [Caption].

Repetimos o processo para mais 2 botões de opção, um para o campo Produto e outro para o Campo Loja da tabela.

De seguida inserimos um novo controlo, a caixa de texto para pesquisar o termo a filtrar.

Desenhamos a caixa de texto e acedemos às suas propriedades para podermos alterar o seu aspeto ou opções. Neste caso vou apenas alterar o nome do objeto.

Criar o código para filtrar os dados
Vamos agora definir o código para filtrar os dados da tabela. O filtro será feito com o critério aplicado na Caixa de Texto, mas o campo a filtrar será definido pelo botão de opção selecionado que respetivamente indicará o campo nº 1, 2 ou 3 da nossa tabela.
Assim, no código de cada botão de opção vamos inserir o seguinte código.
Public Valor As Integer
Private Sub optMarca_Click()
Valor = 1
End Sub
Private Sub optProduto_Click()
Valor = 2
End Sub
Private Sub optLoja_Click()
Valor = 3
End Sub
Para acederes ao código de cada botão basta efetuares um duplo clique sobre o objeto.
Neste código estamos a criar uma variável “Valor” que pode assumir os 3 números, um para cada botão de opção.

No código de cada botão de opção definimos o respetivo valor.
De seguida aplicamos o código na Caixa de Texto, que irá então definir o critério para o filtro aplicado na tabela.
Private Sub TextPesquisa_Change()
If TextPesquisa.Text = “” Then
Folha1.ListObjects(“Produtos”).AutoFilter.ShowAllData
Else
Folha1.ListObjects(“Produtos”).Range.AutoFilter _
Field:=Valor, Criteria1:=TextPesquisa.Text
End If
End Sub
Neste Código estamos a definir uma condição em primeiro lugar, para que quando a caixa de texto não tiver nenhum valor, possamos ver todos os dados da tabela.
Caso a Caixa de texto esteja preenchida, fará então o filtro na Tabela [ListObjects], onde o campo [Field] será definido pelo valor do botão de Opção e o Critério [Criteria1] será definido pelo texto da Caixa de Texto.

Desta forma, quando testares conseguirás ver o filtro a ser aplicado instantaneamente sobre a tabela diretamente nos teus dados!


Leave a Reply