Procura e localizar VBA

Bom dia,

Preciso de ajuda para uma macro.

A ideia é criar uma espécie de motor de busca, conforme vemos nos nossos navegadores, ou seja, numa célula A2 insiro o que quero procurar e ao clicar num botão vai me procurar esse valor em toda a minha extensa lista de A8:C13629 e localizar na planilha onde o valor está, selecionando-o.

PROC.xlsx (536,5,KB)

Agradeço a vossa atenção.

Boa tarde,

Segue uma idéia de macro para começar a resolver seu problema.

Sub weqe()
    If IsEmpty(Cells(2, 1).Value) Then
        Rows("7:20000").Hidden = False
    Else
        Rows("7:20000").Hidden = True
        For i = 7 To 50
            If CStr(Cells(2, 1).Value) = CStr(Cells(i, 1).Text) Then
                Rows(i).Hidden = False
            End If
        Next i
    End If
End Sub

Espero ajudar!

Obrigado @DimplyKhan pela atenção.

Entendi a ideia mas o que queria mesmo era apenas que localiza-se, sem a necessidade de esconder, tal como a funcionalidade de localizar+substituir do excel (ctrl+L)

Ou então que procura-se nas 4 colunas, é que posso por vezes pesquisar pelo nome em vez do código.

Nesse caso acho que seria mais simples.

Sub weqe()
    Cells.Find(What:=CStr(Cells(2, 1).Value), After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False).Activate
End Sub

Se congelar as linhas de cima, o botão não “desaparece”, e quando clicar a segunda vez, ele ira buscar pela próxima célula.

Esta perfeito Duarte,

Só uma ultima questão, dá para aplicar esse código numa TextBox, onde escrevia o texto e ao clicar Enter fazer a procura :slight_smile:

Obrigado

What:=CStr(Cells(2, 1).Value)

Este é o valor que será buscado, estou usando o texto da Célula A2, se alterar para a TextBox.text, não deve haver problema

Segue um Exemplo, isolando a “Busca”

Sub Button1_Click()
     Busca = ActiveSheet.TextBox1.Text
    Cells.Find(What:=Busca, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False).Activate
End Sub

É isso mesmo Duarte,

Não dá é em vez de ter de clicar no botão, executar a macro após digitar o texto na textbox e clicar Enter?

Daria sim, segue o código pra usar com a textbox.

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = Asc(vbCr) Then
        Busca = ActiveSheet.TextBox1.Text
        Cells.Find(What:=Busca, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False).Activate
    End If    
End Sub

é isso mesmo, já funciona direito. Só me está a dar o seguinte erro quando não encontra nenhum item

Preferia que aparecesse uma MsgBox a informar que o artigo não foi encontrado :slight_smile:

Não tive como testar, mas em teoria essas mudanças devem alterar o comportamento.

Teria que verificar se a MsgBox esta correta.

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

On Error Resume Next
If KeyCode = Asc(vbCr) Then
    Busca = ActiveSheet.TextBox1.Text
    Cells.Find(What:=Busca, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False).Activate
End If


If Err.Number <> 0 Then
    MsgBox "O Valor não foi encontrado!"
End If
End Sub

Está perfeito Arthur.

Muito obrigado pela ajuda :slight_smile: