Notifications
Clear all

FORMULARIO DE PESQUISA COM PROBLEMA

4 Posts
2 Usuários
0 Reactions
936 Visualizações
(@pelichiero)
Posts: 52
Trusted Member
Topic starter
 

Pessoal , sou iniciante em VBA , estou fazendo uma planilha de controle de estoque para meu serviço. Fiz um formulario para pesquisa de produtos mas ele nao esta funcionando ,ele da a mensamgem de "produto não encontrado" o código eu copiei da internet e mudei algumas coisas.O formulario fica na planilha estoque .
Gostaria de digitar qualquer palavra do campo da descrição do produto para ele procurar é possivel.

Planilha em anexo

 
Postado : 12/04/2017 7:24 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde,

Note que no código da busca foi montado a partir de uma macro. Quando se usa o comando Ctrl+L faz uma busca na planilha, mas como na sua planilha tem resultados vindo de formulas, você deve marca no 'Examinar: Valores'.

Fiz uma macro e substitui no seu código:

Private Sub ProcuraPersonalizada(ByVal TermoPesquisado As String)

    Dim Busca As Range
    Dim Primeira_Ocorrencia As String
    Dim Resultados As String
    
    
    Rem Set Busca = Plan6.Cells.Find(What:=TermoPesquisado, After:=Range("B4"), LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
        
    'Executa a busca
    Set Busca = Plan6.Cells.Find(What:=TermoPesquisado, After:=Range("A4"), LookIn:=xlValues, 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  'Lista o primeiro resultado na variavel
    
        'Neste loop, pesquisa todas as próximas ocorrências para
        'o termo pesquisado
        Do
            Set Busca = Plan6.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)  'Valor maximo do seletor de registros
        
        'habilita o seletor de registro
        SpinButton1.Enabled = True
        
        'indicador do seletor de registros
        Label_Registros_Contador.Caption = "1 de " & UBound(MatrizResultados) + 1
        
        
        'Box com o conteudo encontrado
        TextBox1.Text = Plan6.Cells(MatrizResultados(0), 1).Value
        TextBox2.Text = Plan6.Cells(MatrizResultados(0), 2).Value
        TextBox3.Text = Plan6.Cells(MatrizResultados(0), 3).Value
        TextBox4.Text = Plan6.Cells(MatrizResultados(0), 4).Value
    
    Else    'Caso nada tenha sido encontrado, exibe mensagem informativa
    
        SpinButton1.Enabled = False     'desabilita o seletor de registros
        Label_Registros_Contador.Caption = ""   'zera os resultados encontrados
        'limpa os campos do formulário
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""
        MsgBox "Nenhum resultado para '" & TermoPesquisado & "' foi encontrado."
    
    End If
        
End Sub

teste e dê retorno.

att,

 
Postado : 12/04/2017 12:10 pm
(@pelichiero)
Posts: 52
Trusted Member
Topic starter
 

Bruno ,

Desculpa mas achei uma formulario mais completo mas nao consigo colocar para rolar na planilha relatorio.
o formulario ja esta pronta so precisa fazer funcionar sera que vc consegue ?
Esse formulario ele ja faz a pesquisa e emite o relatorio para impressao.

A planilha esta em anexo

 
Postado : 12/04/2017 12:42 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde,

Desculpe mas ListView não é meu forte.

att,

 
Postado : 12/04/2017 2:43 pm