Como fazer um formu...
 
Notifications
Clear all

Como fazer um formulario de busca VBA

3 Posts
2 Usuários
0 Reactions
3,549 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia amigos,

Oi pessoal. Hoje vamos criar uma pesquisa personalizada bem simples com base no comando Localizar do excel. Nessa pesquisa, os dados retornados serão exibidos num formulário.
Vamos começar então.

Tendo em mãos uma planilha simples:
Temos, assim, quatro colunas: nome, estado, função e status. Adicione um botão de comando nessa planilha, definindo seu caption como “Localizar na Planilha”. Dê um duplo clique nesse controle para abrir o evento Click no ambiente VBA e podermos editá-lo. Quando abrir, digite isso:

Private Sub CommandButton1_Click()

frmBusca.Show False    'Exibe o Formulário da Pesquisa

End Sub
    Nome Estado Função Status
    Marcelle Silva Rio de Janeiro Técnica Ativo
    Cláudia Mara Goiás Tecnica Ativo
    Ricardo Teles Minas Gerais Supervisor Ativo
    James Wood Rio de Janeiro Técnico Férias
    Aline Aguiar Moraes Bahia Técnica Ativo
    Cláudia Moraes Li Grande do Sul Gerente Executiva Ativo
    Marcelo de Souza Rio de Janeiro Supervisor Aposentado
    Maria Antonieta Bahia Secretária Férias
    Jackie Wistern Bahia Técnico Ativo[/list:u:1k7wpm24]

    Bom, agora, adicione um formulário (Menu Inserir > UserForm) e dê o nome “frmBusca”.Adicione a ele 5 TextBox(Caixa de texto), 8 Label(Rotulo),1 CommandButton e 1 SpinButton(Barra de rolagem). O formulário deve ficar parecido com este:

      Defina os seguintes nomes aos controles:
      CommandButton = btn_Procurar
      SpinButton = SpinButton1
      Label que vai mostrar a posição do registro atual = Label_Registros_Contador (Os demais Labels não precisa alterar os nomes)
      Textbox onde vai digitar o termo da pesquisa = txt_Procurar (Os demais textbox deixe como TextBox1, TextBox2, TextBox3 e TextBox4)[/list:u:1k7wpm24]

      Bom amigos, seguir a proxima etapa!

       
Postado : 14/06/2011 6:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia amigos,

Continuação...

Após ajustar o design do formulário, tecle F7 para exibir o seu código e declare as duas variáveis públicas abaixo:

Public MatrizResultados As Variant
Public Total_Ocorrencias As Long

'Em seguida, crie a sub-rotina que executará a pesquisa no formulário:

Private Sub ProcuraPersonalizada(ByVal TermoPesquisado As String)
Dim Busca As Range
Dim Primeira_Ocorrencia As String
Dim Resultados As String

'Executa a busca

Set Busca = Plan1.Cells.Find(What:=TermoPesquisado, After:=Plan1.Range("A1"),
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)

'Caso tenha encontrado alguma ocorrência...

If Not Busca Is Nothing Then
Primeira_Ocorrencia = Busca.Address
Resultados = Busca.Row  [color=#80FF00]'Lista o primeiro resultado na variavel[/color]

'Neste loop, pesquisa todas as próximas ocorrências para o termo pesquisado

Do
Set Busca = Plan1.Cells.FindNext(After:=Busca)

Condicional para não listar o primeiro resultado pois já foi listado acima

If Not Busca.Address Like Primeira_Ocorrencia Then
Resultados = Resultados & ";" & Busca.Row
End If
Loop Until Busca.Address Like Primeira_Ocorrencia
MatrizResultados = Split(Resultados, ";")

'Atualiza dados iniciais no formulário

SpinButton1.Max = UBound(MatrizResultados) [color=#80FF00] 'Valor maximo do seletor de registros[/color]

'habilita o seletor de registro

SpinButton1.Enabled = True

'indicador do seletor de registros

Label7.Caption = "1 de " & UBound(MatrizResultados) + 1

'Box com o conteudo encontrado

 TextBox2.Text = Plan1.Cells(MatrizResultados(0), 1).Value
        TextBox3.Text = Plan1.Cells(MatrizResultados(0), 2).Value
        TextBox4.Text = Plan1.Cells(MatrizResultados(0), 3).Value
Else    [color=#80FF00]'Caso nada tenha sido encontrado, exibe mensagem informativa[/color]
        SpinButton1.Enabled = False     [color=#80FF00]'desabilita o seletor de registros[/color]        Label7.Caption = ""   [color=#80FF00]'zera os resultados encontrados[/color]        'limpa os campos do formulário
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""
        
        MsgBox "Nenhum resultado para '" & TermoPesquisado & "' foi encontrado."

    End If

End Sub

Feito isso, falta criar os procedimentos a serem executados ao abrir o formulário, ao clicar no botão pesquisar e ao clicar nos botões que percorrem os resultados obtidos. Segue abaixo esse códigos nesta ordem:... Termina na proxima etapa...

 
Postado : 16/06/2011 6:16 am
 jvra
(@jvra)
Posts: 21
Eminent Member
 

Amigo, o anexo com a imagem do formulário não está disponível. Poderia disponibilizar por favor?

 
Postado : 21/12/2016 11:48 am