O artigo de hoje faz parte da série de artigos Aprendendo VBA que te ensinará como criar um Formulário de Pesquisa com VBA.
Você aprenderá como Formulário de Pesquisa com VBA a partir do Zero!
Mesmo se você não tiver muito conhecimento em VBA se você seguir o passo a passo e assistir a vídeo aula você conseguirá com certeza fazer o seu formulário também.
Muitas vezes temos a necessidade de ter um mecanismo de busca de informações e exibições destas informações em nossos sistemas desenvolvidos em Excel e VBA, para isso o artigo abaixo te dá o passo a passo do que você precisará para conseguir construir o seu formulário de pesquisa.
Formulário de Pesquisa com VBA
Aula Completa!!!
Caso você precise de mais detalhes segue o passo a passo abaixo:
Este projeto é dividido em algumas etapas para facilitar a compreensão e realização da construção passo a passo.
Etapas do Projeto:
- Base de Dados
- Montagem do Layout do Formulário e interação com os componentes
- Criação do Algoritimo de Pesquisa e Exibição dos dados.
- Revisão e Testes.
1 – Base de Dados – Formulário de Pesquisa
Para que o seu projeto funcione você precisará ter uma base de dados, nesta base de dados que o mecanismo de busca irá atuar, podemos chamar de base de dados uma Sheet/Aba de cadastros de clientes com campos como Nome, Estado, Cidade entre outros…
A imagem abaixo tem como exemplo uma base de dados com os campos, CIDADE, ESTADO, NOME DO CLIENTE.

2 – Montagem do Layout do Formulário de Pesquisa com VBA
Para a montagem do Formulário de Pesquisa utilizaremos, um Formulário (UserForm), 3 caixas de texto (textbox), 3 Rótulos(Labels), 2 Botões de Comando (Command Buttons), 1 Listview.
Sabendo quais são os componentes que vamos utilizar vamos montar o nosso Layout conforme a imagem abaixo…
Perspectivava Final do Formulário de Pesquisa com VBA:

Ambiente de Programação do VBA: ALT +F11.
Para que você consiga montar seu Formulário de Pesquisa com VBA você deverá acessar o ambiente do VBA, através do menu Desenvolvedor ou com as teclas de atalho: ALT +F11.
Já no ambiente de programação do VBA você terá acesso a uma tela semelhante a que é exibida abaixo:

Inserindo um Formulário
Após ter acesso ao console do Visual Basic For Applications na tela acima você deverá criar o seu formulário conforme a imagem abaixo mostra:
- Menu – Inserir / Insert
- Formulário / UserForm
- Onde será exibido o seu formulário e todos os componentes
Após realizar a etapa de inserir o formulário você visualizará uma imagem semelhante a abaixo, com um formulário em branco sem campos e sem funcionalidades programadas.
- Formulário em branco onde devem ser inseridos os componentes
- Caixa de Ferramentas, nela que selecionaremos os componentes do formulário.
- Janela de Propriedades, nela trocamos os nomes e todas propriedades dos componentes.
Montagem do Formulário de Pesquisa com VBA: Layout
Para a montagem do Formulário de Pesquisa utilizaremos, um Formulário (UserForm), 3 caixas de texto (textbox), 3 Rótulos(Labels), 2 Botões de Comando (Command Buttons), 1 Listview.
Sabendo quais são os componentes que vamos utilizar vamos montar o nosso Layout conforme a imagem abaixo:
- Caixas de Texto / TextBox = Recebem os valores para realizar a pesquisa
- Rótulos / Labels = São os títulos que ficam sobre os campos
- Botões de Comando / Command Buttons = Botões que realizarão ações
- Listview = Exibirá os resultados da busca dentro do Formulário
- Janela de Propriedades onde iremos renomear os campos conforme abaixo.
Dando nomes para os componentes do Formulário de Pesquisa com VBA
Na montagem do Layout é necessário dar nomes aos componentes que colocamos nos formulário, isso facilita na hora que precisamos identificar cada componente e também quando vamos atribuir ou capturar o valor de cada campo ou componente do nosso formulário.
Para os componentes do nosso formulário vamos dar os seguintes nomes, alterando a propriedade NAME na janela de propriedades:
txt_nome = Campo que receberá o NOME do cliente para a pesquisa.
txt_cidade = Campo que receberá o CIDADE do cliente para a pesquisa.
txt_estado = Campo que receberá o ESTADO do cliente para a pesquisa.
bt_limpar = Botão com a função de resetar a pesquisa e retonar os valores originais.
bt_pesquisa = Botão que executa o código de filtragem no formulário.
Listview1 = Componente que recebe os valores da busca.
Criação do Algoritimo de Pesquisa e Exibição dos dados do Formulário de Pesquisa com VBA.
Com os campos renomeados é hora de colocarmos a mão na massa e partirmos para a programação do código que faz a filtragem dos campos e ações de busca.
Mas antes disse é importante se certificar que a sua base de dados está com filtros, se ela não estiver selecione os campos que deseja filtrar e aperte CRTL + SHIFT + L que o filtro será habilitado, após isso siga para os passos abaixo:
Carregamento das informações ao iniciar o formulário:
Private Sub UserForm_Initialize()
With ListView1
.BorderStyle = ccFixedSingle
.Gridlines = True
.View = lvwReport
.FullRowSelect = True
.ColumnHeaders.Add Text:="Cidade.", Width:=100
.ColumnHeaders.Add Text:="Estado", Width:=50, Alignment:=2
.ColumnHeaders.Add Text:="Nome", Width:=80, Alignment:=2
End With
ListView1.ListItems.Clear
'Adiciona os dados a listview2
Sheets("Plan1").Select
lin = 2
Do Until Sheets("Plan1").Cells(lin, 1) = ""
Set li = ListView1.ListItems.Add(Text:=Sheets("Plan1").Cells(lin, 1).Value)
li.ListSubItems.Add Text:=Sheets("Plan1").Cells(lin, 2).Value
li.ListSubItems.Add Text:=Sheets("Plan1").Cells(lin, 3).Value
lin = lin + 1
Loop
lbl_registros = Me.ListView1.ListItems.Count
End Sub
No Formulário clique no seu botão “BUSCAR” 2x e insira o código abaixo:
Private Sub bt_pesquisa_Click()
'Formulário de Pesquisa com VBA
'Variáveis recebendo o valor dos campos
estado = Me.txt_estado.Value
nome = Me.txt_nome.Value
cidade = Me.txt_cidade.Value
'Mecanismo de filtragem
ActiveSheet.Range("$A$1:$C$12").AutoFilter Field:=1, Criteria1:="=*" & cidade & "*"
ActiveSheet.Range("$A$1:$C$12").AutoFilter Field:=2, Criteria1:="=*" & estado & "*"
ActiveSheet.Range("$A$1:$C$12").AutoFilter Field:=3, Criteria1:="=*" & nome & "*"
'Limpando os dados da Listview antes de exibir a filtragem
ListView1.ListItems.Clear
'Adiciona os dados a listview
Sheets("Plan1").Select
lin = 2
Do Until Sheets("Plan1").Cells(lin, 1) = ""
If Cells(lin, 1).Rows.Hidden = False Then
Set li = ListView1.ListItems.Add(Text:=Sheets("Plan1").Cells(lin, 1).Value) 'Cod
li.ListSubItems.Add Text:=Sheets("Plan1").Cells(lin, 2).Value 'Nome
li.ListSubItems.Add Text:=Sheets("Plan1").Cells(lin, 3).Value 'Canal
End If
lin = lin + 1
Loop
End Sub
No Formulário clique no seu botão “LIMPAR” 2x e insira o código abaixo:
Private Sub bt_limpar_Click()
'Formulário de Pesquisa com VBA
'Desabilita o filtro da base de dados
ActiveSheet.ShowAllData
'Limpa os dados da Listview
ListView1.ListItems.Clear
'Adiciona os dados a listview2
Sheets("Plan1").Select
lin = 2
Do Until Sheets("Plan1").Cells(lin, 1) = ""
If Cells(lin, 1).Rows.Hidden = False Then
Set li = ListView1.ListItems.Add(Text:=Sheets("Plan1").Cells(lin, 1).Value) 'Cod
li.ListSubItems.Add Text:=Sheets("Plan1").Cells(lin, 2).Value 'Nome
li.ListSubItems.Add Text:=Sheets("Plan1").Cells(lin, 3).Value 'Canal
End If
lin = lin + 1
Loop
lbl_registros = Me.ListView1.ListItems.Count
End Sub
Esta é apenas uma forma de realizar uma busca com Formulário de Pesquisa com VBA no Excel.
Caso você tenha interesse em aprender como CRIAR UM FORMULÁRIO DE CADASTRO acesse o link abaixo:
http://douglasgodoy.com.br/vba-aprenda-criar-formulario-de-cadastro/
Espero que você tenha aprendido coisas novas nesta aula e saia com ainda mais conhecimento.
Se você ainda tiver dúvidas me escreva e se inscreva no canal para receber as aulas novas.
Ah, e se você quiser a planilha, se inscreva no canal e comenta lá no video com seu email que te envio.
Um abraço!
Douglas Godoy

Deixe um comentário