Como Adicionar Filtro de Pesquisa a uma Lista Suspensa do Excel Usando um ComboBox
🔍 WiseChecker

Como Adicionar Filtro de Pesquisa a uma Lista Suspensa do Excel Usando um ComboBox

As listas suspensas padrão de validação de dados do Excel são simples, mas não possuem recurso de pesquisa. Isso torna difícil e demorado encontrar itens em listas longas. Você pode adicionar filtragem de pesquisa dinâmica usando um controle ActiveX ComboBox. Este artigo explica como configurar uma lista suspensa pesquisável em sua planilha.

Principais pontos: Adicionando uma Lista Suspensa Pesquisável

  • Desenvolvedor > Inserir > ComboBox (Controle ActiveX): Coloca um controle pesquisável em sua planilha que pode ser vinculado a uma lista de origem.
  • Propriedades do ComboBox > ListFillRange: Define o intervalo de células que contém a lista mestre de itens para o controle.
  • Código VBA para o Evento Change: Filtra os itens do ComboBox em tempo real conforme o usuário digita na caixa de pesquisa.

Visão Geral do ActiveX ComboBox para Pesquisa

Um ActiveX ComboBox é um controle de formulário que combina uma caixa de texto com uma lista suspensa. Diferente de uma lista de validação de dados padrão, ele permite que os usuários digitem caracteres. Você pode então usar código VBA para filtrar os itens da lista exibidos com base nessa entrada digitada. Isso cria uma experiência instantânea de pesquisa enquanto digita. A configuração requer uma lista de origem de itens, o próprio ComboBox e uma macro curta para lidar com a lógica de filtragem. Você deve habilitar a guia Desenvolvedor no Excel para acessar os controles necessários para esta tarefa.

Passos para Criar uma Lista Suspensa Pesquisável com ComboBox

Siga estes passos para construir um filtro de pesquisa funcional para sua lista. Certifique-se de que sua lista mestre de itens esteja em uma única coluna em uma planilha.

  1. Habilitar a Guia Desenvolvedor
    Vá em Arquivo > Opções > Personalizar Faixa de Opções. No painel direito, marque a caixa para Desenvolvedor e clique em OK. A guia Desenvolvedor aparecerá na sua faixa de opções.
  2. Inserir o Controle ComboBox
    Clique na guia Desenvolvedor. No grupo Controles, clique em Inserir. Em Controles ActiveX, clique no ícone ComboBox. Clique e arraste em sua planilha para desenhar o controle.
  3. Definir o Intervalo de Dados de Origem
    Clique com o botão direito no novo ComboBox e selecione Propriedades. Na janela Propriedades, encontre a propriedade ListFillRange. Insira o intervalo de células da sua lista mestre, como Plan1!$A$1:$A$100. Feche a janela Propriedades.
  4. Entrar no Modo de Design e Adicionar Código
    Na guia Desenvolvedor, certifique-se de que Modo de Design esteja destacado. Clique com o botão direito no ComboBox e selecione Exibir Código. Isso abre o editor do Visual Basic for Applications.
  5. Colar o Código de Filtragem
    Na janela de código, cole o seguinte script VBA. Substitua “Plan1!$A$1:$A$100” pelo endereço real do seu ListFillRange.

    Private Sub ComboBox1_Change()
    Dim srcRange As Range, cell As Range
    Dim matchStr As String
    Me.ComboBox1.Clear
    matchStr = Me.ComboBox1.Text
    Set srcRange = ThisWorkbook.Worksheets("Plan1").Range("A1:A100")
    If matchStr = "" Then
    For Each cell In srcRange
    If cell.Value <> "" Then Me.ComboBox1.AddItem cell.Value
    Next cell
    Else
    For Each cell In srcRange
    If InStr(1, cell.Value, matchStr, vbTextCompare) > 0 Then
    Me.ComboBox1.AddItem cell.Value
    End If
    Next cell
    End If
    Me.ComboBox1.DropDown
    End Sub

  6. Sair do Modo de Design e Testar
    Feche o editor VBA. De volta ao Excel, na guia Desenvolvedor, clique em Modo de Design para desativá-lo. Clique no seu ComboBox e comece a digitar. A lista deve filtrar para mostrar apenas os itens que contêm o texto digitado.

Erros Comuns e Limitações a Evitar

O ComboBox Não Aparece ou Está Esmaecido

Controles ActiveX podem ser desabilitados pelas configurações da Central de Confiabilidade. Vá em Arquivo > Opções > Central de Confiabilidade > Configurações da Central de Confiabilidade > Configurações do ActiveX. Selecione a opção para habilitar todos os controles sem restrições. Salve e reabra sua pasta de trabalho para que a alteração tenha efeito.

Digitar Não Mostra Resultados Filtrados

Isso geralmente significa que o código VBA não está sendo executado. Certifique-se de que o Modo de Design está desativado na guia Desenvolvedor. Além disso, confirme que o código está no módulo da planilha correta. Verifique se o endereço do intervalo no código VBA corresponde exatamente à propriedade ListFillRange, incluindo o nome da planilha.

A Segurança de Macro Impede a Pesquisa de Funcionar

Pastas de trabalho que contêm macros devem ser salvas como Pasta de Trabalho Habilitada para Macro do Excel (.xlsm). Se você salvar como um arquivo .xlsx padrão, o código VBA será perdido. Ao abrir o arquivo, você deve clicar em Habilitar Conteúdo na barra de aviso de segurança para que as macros sejam executadas.

ComboBox vs. Lista Suspensa de Validação de Dados

Item ActiveX ComboBox com Pesquisa Lista de Validação de Dados Padrão
Função de Pesquisa Sim, digite para filtrar a lista dinamicamente Não, apenas role ou digite correspondência exata
Complexidade de Configuração Requer código VBA e guia Desenvolvedor Configuração simples via Dados > Validação de Dados
Interação do Usuário Clique no controle, digite, selecione da lista filtrada Clique na seta, role, clique na seleção
Formato do Arquivo Deve ser salvo como .xlsm (habilitado para macro) Funciona em todos os formatos de arquivo do Excel
Melhor Para Listas longas onde os usuários conhecem nomes parciais Listas curtas e fixas para entrada de dados consistente

Agora você pode implementar uma lista suspensa pesquisável em suas planilhas do Excel. Use o ActiveX ComboBox da guia Desenvolvedor e vincule-o à sua fonte de dados. Para listas mais dinâmicas, explore o uso do ComboBox com um intervalo de Tabela que se expande automaticamente. Tente usar a propriedade MatchEntry definida como fmMatchEntryComplete para mais controle sobre o comportamento da pesquisa.