Objetivo: Como filtrar colunas Excel VBA. Realizar o filtro dos nomes das colunas a partir da digitação, da mesma forma como é utilizado o filtro de linhas no Excel a partir do Autofiltro.
Uma das funções que ainda faltam ao Excel é o filtro de colunas no Excel. Esta funcionalidade só existe para a filtragem das linhas, mas não para filtrar colunas.
Sendo assim, implementei em Excel/VBA a filtragem de colunas a partir do conteúdo digitado em elemento TextBox muito semelhante ao já utilizado no artigo Lista com Filtro de Dados Automático 3 aonde é demonstrado como realizar o filtro automático á medida em que vai sendo digitado o conteúdo para filtrar as linhas.
O código implementado funciona da seguinte forma. Na imagem seguinte vemos algumas colunas de uma planilha:
A coluna que irá sumir é a que está em azul na planilha, ela será oculta quando forem digitadas letras que não se encontram no seu título, veja na imagem seguinte:
Na TextBox foi digitado ship, e somente as colunas que contém esta cadeira de caracteres na planilha Excel foram mantidas em exibição, sendo ocultas as outras colunas portanto.
Para implementar esta funcionalidade primeiro tenha uma planilha com os dados dispostos em formato de lista, assim como o anexo deste artigo, e insira uma coluna á esquerda.
Agora clique na guia Desenvolvedor, veja aqui como habilitar: Habilitar guia desenvolvedor no Excel, clique no botão Modo Design e insira um Textbox, conforme a imagem e posicione á esquerda das colunas.
Agora ainda em modo de Edição, clique duas vezes sobre a Text Box inserida na planilha Excel, ela irá redirecionar ao ambiente Microsoft VBA Excel e conterá algo como Private Sub TextBox1_Change() que faz com que seja efetuada uma ação a cada alteração do conteúdo da Text Box.
Copie e cole o conteúdo seguinte sobrepondo o conteúdo que houver no código VBA.
Private Sub TextBox1_Change() Dim i As Long Dim lColuna As Long 'Desliga a atualização automática do Excel Application.ScreenUpdating = False 'Seleciona todas as células da planilha Cells.Select 'Exibe todas as colunas da planilha Selection.EntireColumn.Hidden = False 'Determina a última coluna preenchida lColuna = Cells(1, Columns.Count).End(xlToLeft).Column 'Seleciona a célula A1 Cells(1, 1).Select 'Faz um loop por todas as colunas preenchidas a partir da segunda For i = 2 To lColuna 'Verifica se a célula contém a informação pesquisada If (UCase(Cells(1, i).Value) Like "*" & UCase(TextBox1.Text) & "*") = False Then 'Oculta a coluna caso não tenha a informação pesquisada Columns(i).EntireColumn.Hidden = True End If Next i 'Seleciona novamente o textbox para digitar o próximo caracter TextBox1.Activate 'Liga a atualização automática do Excel Application.ScreenUpdating = True End Sub
Agora volte ao Excel e tire a sua planilha do modo Design, desmarcando o botão na guia Desenvolvedor. Digite algo na Text Box e veja como os dados das colunas são filtrados.
Baixe a planilhaAbraço
Marcos Rieper