Página 1 de 1

Macro para Pesquisar em Guias Determinadas

Enviado: 30 Mai 2018 às 12:43
por construindoideias
Boa tarde pessoal!
Recentemente estou trabalhando em um código que:
- Busque pela palavra(ou parte dela) contida em um textbox:
Ex: "Morango" ou "mor"
- Busca seja feita em determinadas guias:
Ex: Tenho 5 guias: A, B, C, D e E. contudo a pesquisa será feita apenas nas guias A, B e D
- Quando encontrar o valor pesquisado em uma célula, direcione para a guia e célula com valor encontrado.

Até o momento consegui o seguinte código:
Código: Selecionar todos
Private Sub CommandButton1_Click()
  Pesquisa = Plan1.TextBox1.Value
  If Pesquisa = "" Then Exit Sub
  Set plan = Sheets("Nome_da_Planilha") 'DEFINE NOME DA PLANILHA
    Set x = plan.Cells.Find(what:=Pesquisa)
    If Not x Is Nothing Then
      firstAddress = x.Address
      Do
        plan.Select
        x.Select
        Set x = plan.Cells.FindNext(x)
      Loop While Not x Is Nothing And x.Address <> firstAddress
    Else
      MsgBox "Texto não encontrado na planilha " & plan.Name
    End If
End Sub
O problema é que só estou conseguindo fazer a pesquisa em uma das guias ou no worksheet inteiro, não consegui definir as guias onde vai ser feita a pesquisa.

Exemplo:
Tenho as guias A, B, C, D e E
Quero que a pesquisa seja feita apenas nas guias A, B e D
Se o valor do textbox estiver na guia A, B ou D abrir a guia e selecionar a célula com o valor respectivo.

No código inserido acima no tópico está tudo acontecendo perfeitamente com exceção de conseguir rodar em mais de uma guia.
Conto com vocês! Obrigado desde já.

Re: Macro para Pesquisar em Guias Determinadas

Enviado: 01 Jun 2018 às 23:51
por babdallas
Anexa um exemplo.

Re: Macro para Pesquisar em Guias Determinadas

Enviado: 02 Jun 2018 às 07:24
por osvaldomp
Experimente:
Código: Selecionar todos
Private Sub CommandButton1_Click()
 Dim Pesquisa As String, ws As Worksheet, x As Range
  Pesquisa = Plan1.TextBox1.Value
  If Pesquisa = "" Then Exit Sub
  For Each ws In Sheets(Array("A", "B", "D"))
   Set x = ws.Cells.Find(what:=Pesquisa, lookat:=xlPart)
    If Not x Is Nothing Then
     ws.Activate: x.Select: End Sub
    End If
  Next ws
  MsgBox "Texto não encontrado"
End Sub