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.
- 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. - 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. - 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. - 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. - 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 - 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.