Blog

Postado em em 11 de julho de 2020

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!

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!

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:

Base de dados exemplo
Base de dados exemplo
Aba auxiliar
Aba auxiliar
Formulário Busca
Formulário Busca

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.

Inserir Módulo
Inserir 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 Sub

No 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 Sub

Precisamos, 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…”

Atribuir Macro...
Atribuir Macro…

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

Atribuindo a macro
Atribuindo a macro

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:

Exibir código VBA - Formulário de Pesquisa no VBA
Exibir código VBA

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”:

Userform Initialize
Userform 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)

Código lista de informações - Formulário de Pesquisa no VBA
Código lista de informações

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.

Clique Caixa Resposta
Clique Caixa Resposta

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

Caixa Resposta Change - Formulário de Pesquisa no VBA
Caixa Resposta Change

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 If

Assim, 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
Código Final VBA - Formulário de Pesquisa no VBA
Código Final VBA

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?

 


Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador