Formulário de Pesquisa no VBA
Você já precisou realizar buscas em planilhas ou tabelas extensas no Excel? Ter formulário de pesquisa no VBA pode te ajudar bastante com isso!
Um formulário de pesquisa no VBA é uma janela (UserForm) que busca registros na base do Excel conforme você digita: o código filtra a tabela e mostra os resultados na hora, em uma ListBox. É a solução para localizar clientes, produtos ou pedidos em segundos, mesmo em planilhas com milhares de linhas.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso Canal do YouTube para mais vídeos!
O que você aprende neste vídeo
Resposta rápida: A aula cria um UserForm de pesquisa no VBA que recebe o nome ou CPF de uma pessoa e devolve o campo escolhido, como área ou salário. O código abre o formulário por um botão, carrega a lista de respostas, localiza a linha com Cells.Find e retorna a célula correspondente.
Neste vídeo (28 min):
- 0:00 - Demonstração do formulário que pesquisa uma pessoa e devolve o dado solicitado
- 2:00 - Criação de um módulo e da macro que abre o UserForm de busca
- 5:00 - Preparação da lista de campos disponíveis na aba Fonte
- 6:00 - Uso do evento
UserForm_Initializepara executar código ao abrir a janela - 9:00 - Identificação dos controles e preenchimento da lista com
RowSource - 12:00 - Teste do menu Área, CPF, Nome, Salário e Sexo e criação do evento de seleção
- 14:00 - Planejamento da busca: descobrir a linha da pessoa e a coluna do dado solicitado
- 16:00 - Localização do nome ou CPF com
Cells.Find(...).Row - 19:00 - Leitura da opção selecionada na caixa de respostas
- 23:00 - Mapeamento de Nome, Sexo, Área, CPF e Salário para seus números de coluna
- 24:00 - Exibição do resultado com
MsgBox Cells(linha, coluna) - 26:00 - Testes práticos pesquisando por nome e por CPF
Trechos do vídeo:
- O formulário separa duas decisões: quem procurar e qual informação devolver.
Cells.Find(...).Rowdescobre a linha do registro; a opção escolhida determina a coluna.- Com linha e coluna definidas,
Cells(linha, coluna)entrega o valor para a mensagem.
Clique aqui para baixar a planilha utilizada nessa publicação!
O que é um formulário de pesquisa no VBA?
Um formulário de pesquisa é uma ferramenta que permite a pesquisa de dados específicos dentro de uma planilha, facilitando a leitura dos dados e a navegabilidade da planilha.
Quando utilizar o formulário de busca?
O formulário de busca no Excel é muito útil em planilhas que contenham um grande volume de informações, pois permite que os dados desejados sejam encontrados de maneira simplificada.
Como criar um formulário de pesquisa no VBA?
Para criarmos um formulário de pesquisa com VBA, precisamos primeiramente ter um formulário padrão de busca, que você pode aprender a fazer em nosso minicurso gratuito como criar um Formulário no Excel totalmente automático!
Para nosso exemplo, vamos utilizar uma planilha que possui informações como o nome, sexo, área, CPF e salário dos funcionários de uma empresa. Nesta planilha existe um formulário padrão já criado, de acordo com o ensinado no minicurso de criação de formulários, e um botão de busca que fará com que o formulário apareça se selecionado pelo usuário. Nesta planilha há também uma aba auxiliar com o nome de Fonte, contendo uma lista com todas as áreas da empresa e as informações das colunas para que o usuário selecione qual destas informações deseja obter utilizando o formulário:



Então, para que nosso formulário faça a pesquisa, devemos pensar nos passos que deverão acontecer para que seu funcionamento se dê corretamente.
1 – Ao clicarmos no botão Buscar, o formulário de busca deve ser exibido
Sempre que quisermos que um botão execute um código do VBA, precisamos que este código a ser executado esteja em um módulo. Precisamos então criar um novo módulo para inserção do código. Para isso, precisamos abrir o VBA (alt+F11 ou, caso não funcione, alt+fn+F11), clicar em Inserir e, em seguida, clicar em Módulo.

Então, um novo módulo é criado, e dentro dele faremos uma macro que fará com que o Excel exiba o formulário.
Para iniciarmos nossa macro, temos que escrever sub “nome da macro” (), e o VBA completa com o End sub ao darmos Enter. No nosso exemplo ficou sendo:
Sub exibe_formulário()
End SubNo nosso exemplo, o formulário de busca possui o nome “userform_busca”. Para que ele seja aberto, no VBA trazemos seu nome . a ação que queremos que seja realizada. Para que a exibição seja feita, usamos então o comando de ação “show”. O código, portanto, fica assim:
Sub exibe_formulário()
userform_busca.Show
End SubPrecisamos, agora, que esta macro seja executada através do botão de buscar. Para isso, clicamos com o botão direito no botão de buscar e selecionamos “Atribuir macro…”

Então, selecionamos a macro que acabamos de criar para exibição do formulário:

Agora, quando clicamos no botão, o formulário é automaticamente exibido.
Precisamos, então, que o VBA exiba uma lista no campo “Qual a resposta desejada?”, com todas as possibilidades, para que o usuário selecione a desejada.
Na nossa planilha de exemplo, temos esta lista na aba “Fonte”, coluna “Tipo”. Assim, o usuário deve poder escolher visualizar alguma das seguintes informações: Área, CPF, Nome, Salário, Sexo. Vamos criar um código para que o VBA exiba esta lista de opções no formulário.
Para isso, precisamos que nosso código seja executado sempre que o formulário for aberto. Precisamos então que nosso código esteja dentro do formulário.
Para criarmos nosso código dentro do formulário, selecionamos, dentro do VBA, nosso formulário com o botão direito e clicamos em Exibir Código:

Como queremos que o código seja executado quando selecionarmos a caixa de opções do formulário, temos que preparar o VBA, utilizando as duas caixas superiores do painel, alterando a caixa “(Geral)” para “UserForm” e “(Declaração)” para “Initialize”:

Vamos então começar a escrever nosso código. Entre as linhas “Private Sub UserForm_Initialize()” e “End Sub”, inserimos o seguinte:
caixa_resposta.RowSource = “Fonte!C3:C7”
Onde:
caixa_resposta é a caixa do formulário onde vamos colocar nossas opções;
RowSource é a lista de informações que entrarão na caixa resposta do formulário;
“Fonte!C3:C7” Células que irão compor a lista de informações (aba Fonte, células C3 a C7)

Nosso próximo passo será fazer com que o VBA selecione a informação da lista que acrescentamos de acordo com a seleção do usuário. Ou seja, se o usuário desejar saber o CPF, por exemplo, o VBA deverá retornar o CPF da pessoa especificada.
Para criarmos uma macro que seja executada toda vez que alguma opção é selecionada, basta darmos duplo clique na caixa de respostas do formulário dentro do VBA.

Após isso, a seguinte tela será exibida:

Agora, em nosso código, precisamos que nossa macro identifique em qual linha está a informação digitada pelo usuário (nome ou CPF), para então retornar a informação desejada.
Como queremos descobrir e guardar a informação que será imputada pelo usuário, vamos criar uma variável, que será a seguinte:
linha = Cells.Find(caixatexto_informacao).Row
Onde:
linha é o nome da variável;
Cells.Find é um comando que encontra a célula que contém uma informação;
caixatexto_informacao é a caixa do formulário onde o usuário irá digitar o nome ou CPF a serem localizados;
.Row localiza a linha na qual a informação digitada pelo usuário se encontra.
Agora, com a linha onde a informação está localizada, temos que retornar a informação selecionada pela pessoa. Vamos fazer isso utilizando o comando if, conforme segue:
If caixa_resposta.Value = "Nome" Then
coluna = 1
ElseIf caixa_resposta.Value = "Sexo" Then
coluna = 2
ElseIf caixa_resposta.Value = "Área" Then
coluna = 3
ElseIf caixa_resposta.Value = "CPF" Then
coluna = 4
Else
coluna = 5
End IfAssim, temos cada informação associada a uma coluna da nossa planilha. Se a informação escolhida for o nome, a coluna da nossa planilha será a coluna 1 (coluna “A”), se for o sexo, será a coluna 2 (coluna “B”), e assim por diante.
Temos agora duas informações, a linha em que a informação buscada se encontra e a coluna da informação de retorno. Podemos trazer a informação de retorno em uma caixa de mensagem, utilizando o comando messagebox, fazendo com que seja retornada a informação na célula especificada pela linha e coluna que encontramos anteriormente:
MsgBox (Cells(linha, coluna))
Assim, nosso código está pronto! O código completo fica conforme segue:
Private Sub caixa_resposta_Change()
linha = Cells.Find(caixatexto_informacao).Row
If caixa_resposta.Value = "Nome" Then
coluna = 1
ElseIf caixa_resposta.Value = "Sexo" Then
coluna = 2
ElseIf caixa_resposta.Value = "Área" Then
coluna = 3
ElseIf caixa_resposta.Value = "CPF" Then
coluna = 4
Else
coluna = 5
End If
MsgBox (Cells(linha, coluna))
End Sub
Private Sub UserForm_Initialize()
caixa_resposta.RowSource = "Fonte!C3:C7"
End Sub
Perguntas frequentes
1. O que é um formulário de pesquisa no VBA?
É uma interface criada com UserForm que funciona como campo de busca da sua base: o usuário digita parte do nome ou código, e a lista de resultados aparece filtrada em tempo real. A planilha vira um pequeno sistema de consulta, sem depender de filtros manuais.
2. Como criar um UserForm no Excel?
No editor VBA (Alt+F11), vá em Inserir > UserForm e monte a tela arrastando controles da Caixa de Ferramentas: TextBox para a busca, ListBox para os resultados e botões de ação. Cada controle recebe código nos seus eventos para dar vida ao formulário.
3. Como fazer a busca filtrar enquanto digito?
Programando o evento Change da TextBox: a cada tecla, o código percorre a base (ou usa filtros) comparando o texto digitado com os registros e recarrega a ListBox só com as correspondências. O efeito é uma busca dinâmica, estilo mecanismo de pesquisa.
4. Preciso ser avançado em VBA para montar esse formulário?
Uma base de VBA ajuda — variáveis, loops e eventos —, mas o projeto é um ótimo aprendizado guiado: cada etapa (criar a tela, ler a base, filtrar, exibir) é simples isoladamente. Seguindo o passo a passo, você termina com um recurso de nível profissional.
Hashtag Treinamentos
Nosso curso de excel funciona para qualquer um, desde a pessoa que não sabe absolutamente nada de Excel até aquela pessoa que quer aquele algo a mais para impressionar!
Quer aprender mais sobre VBA com um Minicurso Gratuito?

