Como Filtrar Tabelas no Excel com VBA

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!


Comments

Leave a Reply

Discover more from Exceldriven

Subscribe now to keep reading and get access to the full archive.

Continue reading