Notifications
Clear all

macro de busca não seleciona próximo item

5 Posts
2 Usuários
0 Reactions
780 Visualizações
(@pdbbarros)
Posts: 0
New Member
Topic starter
 

Amigos,

Criei, com ajuda de alguma pesquisa, a seguinte macro de busca:

Private Sub Localizar_Click()

Worksheets("Relação").Unprotect Password:="secobr"
Dim busca As Range
Dim PrimeiraBusca As String
Dim wsr As Worksheet
Dim msg As String

Set wsr = Worksheets("Relação")

wsr.Select
With Worksheets("Relação").Range("TabRelação[nome]")
Set busca = .Find(Caixa_de_procura.Value)
If Not busca Is Nothing Then
Range("e1").Value = busca.Value
Worksheets("Pesquisa").Range("c4").Value = Range("f1").Value
PrimeiraBusca = busca.Address
Do
Set busca = .FindNext(busca)
busca.Activate
Range("e1").Value = busca.Value
Worksheets("Pesquisa").Range("c4").Value = Range("f1").Value

Loop While Not busca Is Nothing And busca.Address <> PrimeiraBusca

Else
msg = "Beneficiário não encontrado!"
MsgBox msg, vbCritical + vbOKOnly
Caixa_de_procura.Value = ""
Caixa_de_procura.SetFocus

End If

End With

Set busca = Nothing

Worksheets("Relação").Protect Password:="secobr", UserInterfaceOnly:=True

End Sub"

Basicamente, quero que ela encontre nomes em uma lista. Adicionalmente, quero que ela copie o nome encontrado pra uma célula (e1), para que esse valor seja usado em outra planilha, pois está atrelado a um PROCV que me traz alguns valores.

Quando eu depuro a macro, funciona perfeitamente, inclusive fazendo as seleções (ativações). Porém, quando eu rodo a macro de verdade, ela só seleciona o primeiro valor e, ao clicar no botão LOCALIZAR novamente, não seleciona os nomes seguinte (exemplo: não seleciona - não ativa - o segundo João).

O que há de errado?

Grato.

 
Postado : 07/11/2016 11:36 am
(@brunoxro)
Posts: 0
New Member
 

Boa tarde pdfbarros,

Disponibilize um arquivo de exemplo, assim fica mais fácil de ajudar.

att,

 
Postado : 07/11/2016 1:25 pm
(@pdbbarros)
Posts: 0
New Member
Topic starter
 

Então, coloquei um arquivo bem básico com minha macro. Está funcionando!

Quando eu "debugo", com F8, o FindNext faz o serviço dele e me dá o próximo item encontrado. Fiz, nesse arquivo, a célula a1 receber a variável "busca", para que consigam visulizar que o FindNext, no modo Debug, está funcionando. Mas quando executo a macro e escrevo, por exemplo, "Carlos", na caixa de busca, a macro só me dá o primeiro item encontrado.

Obrigado.

 
Postado : 08/11/2016 10:48 am
(@brunoxro)
Posts: 0
New Member
 

Boa noite pdbbarros,

No caso no final só vai ficar um nome na célula mesmo, porque a macro faz um Loop com todos os 'Carlos' e vai colocando um sobre o outro na mesma célula.

Para o seu caso acho que é necessário 'salvar' um contador da pesquisa em alguma coluna... tenho que pensar mais.

 
Postado : 08/11/2016 4:57 pm
(@pdbbarros)
Posts: 0
New Member
Topic starter
 

Boa noite pdbbarros,

No caso no final só vai ficar um nome na célula mesmo, porque a macro faz um Loop com todos os 'Carlos' e vai colocando um sobre o outro na mesma célula.

Pra mim isso não faz diferença se ele coloca um "Carlos" em cima do outro. Eu só quero que a macro "ative" a célula em que o 2º, 3º, 4º, e assim por diante, "Carlos" estiver, entende? Na função Debug dá certo! Mas executando a macro não! Vc verá exatamente o que eu quero se fizer um CTRL + L e usar a busca do Excel. Vc digita "Carlos" e ele te dá o primeiro resultado. Quando vc aperta ENTER, ele "ativa" o segundo resultado, não é? Então, eu quero a macro faça isso pra eu poder jogar o valor do "Carlos ativado" em uma outra célula noutra planilha. Eu já procurei BASTANTE no Google uma macro pronta pra isso, mas não obtive êxito.

Para o seu caso acho que é necessário 'salvar' um contador da pesquisa em alguma coluna... tenho que pensar mais.

Sou novato, mas sou teimoso. Vou tentar essa ideia.

Obrigado pela ajuda até aqui.

 
Postado : 08/11/2016 5:43 pm