Notifications
Clear all

.Find em Várias Abas

4 Posts
2 Usuários
0 Reactions
592 Visualizações
(@felipecali)
Posts: 2
New Member
Topic starter
 

Olá Pessoal,

Estou com problemas com uma Find que coloquei dentro de um loop que vai de aba em aba buscando históricos parecidos, porém ao executar na segunda vez o loop, a find apresenta o erro 91 (A variável do objeto ou a variável do bloco 'with' não foi definida).
O arquivo tem um total de 25 abas, mas a procura deveria ser realizada a partir da aba 12 em diante.

Dentro da find utilizo uma variável (what), onde já tentei definir como range, string, integer... e não ajudou.

Alguém poderia me ajudar, por favor?

Muito Obrigado

Sub Procura_abas()

Number = 7
    
 Procura_Completo = Cells(Number, 2).Value
 
     If Len(Procura_Completo) > 12 Then
                            N_Letras = Len(Procura_Completo) - 7
                            Procura_Reduzido = Left(Procura_Completo, N_Letras)
                            WSheet_Total = Sheets.Count
                            Sheet_couter = 12
                        
                        Do Until Sheet_couter = WSheet_Total
                        
                            Sheets(Sheet_couter).Activate
                            
                            
                 On Error GoTo Erro_01
'Esta é a FIND que apresenta erros...                                                                                    
                            Columns(2).Find(What:=Procura_Reduzido, After:=ActiveCell, _
                                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                                MatchCase:=False, SearchFormat:=False).Activate

                            CC_linha = ActiveCell.Row
                            CC_coluna = ActiveCell.Column

                Erro_01:
                            Sheet_couter = Sheet_couter + 1
                            
                            Loop
                                                                
     Else
                        
     End If
    
End Sub
 
Postado : 05/08/2018 12:23 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa noite, Felipe, seja bem vindo ao Planilhando!

Provavelmente isso está ocorrendo pq, ao procurar com o Find e não encontrando nada, o retorno é Nothing, e Nothing não pode ser ativado com o .Activate

Sugiro colocar o conteúdo numa variável range, testar se ela não está vazia e só então ativar (se necessário) o range encontrado. Em linhas gerais...

....
Set rg = Columns(2).Find(What:=Procura_Reduzido, etc, etc, etc..., mas removendo o .Activate que vc usou ao final
If Not rg Is Nothing Then
    CC_linha = rg.Row
    CC_coluna = rg.Column
...

 
Postado : 05/08/2018 8:33 pm
(@felipecali)
Posts: 2
New Member
Topic starter
 

Edson
Sua solução funcionou perfeitamente.
Muito Obrigado.

o código ficou da seguinte forma:

Sub Procura_abas()

Dim rg As Range

Number = 7
    
Procura_Completo = Cells(Number, 2).Value

     If Len(Procura_Completo) > 12 Then
                            N_Letras = Len(Procura_Completo) - 7
                            Procura_Reduzido = Left(Procura_Completo, N_Letras)
                            WSheet_Total = Sheets.Count
                            Sheet_couter = 12
                        
                        Do Until Sheet_couter = WSheet_Total + 1
                        
                            Sheets(Sheet_couter).Activate
                            Range("A1").Select
                            Selection.AutoFilter
                            Selection.AutoFilter
                            
                            
                 On Error GoTo Erro_01
                           Set rg = Columns(2).Find(What:=Procura_Reduzido, _
                                                         LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                                                         MatchCase:=False, SearchFormat:=False)
                        
                                                                                    
                            If Not rg Is Nothing Then
                                
                                Columns(2).Find(What:=Procura_Reduzido, _
                                                 LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                                                 MatchCase:=False, SearchFormat:=False).Activate
                                
                                CC_linha = ActiveCell.Row
                                CC_coluna = ActiveCell.Column
                                
                            End If

                Erro_01:
                            Sheet_couter = Sheet_couter + 1
                            
                            Loop
                                                                
     Else
                        
     End If
    
End Sub
 
Postado : 09/08/2018 8:57 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Ok, Felipe

Como orientação, como vc é novo no Fórum, aqui vai uma dica: vc deve clicar em "Resolvido" na mensagem que mais lhe ajudou a solucionar seu problema, não em sua própria mensagem, ok?

 
Postado : 09/08/2018 9:26 am