Notifications
Clear all

[Erro] Váriavel 'With' não definida

10 Posts
2 Usuários
0 Reactions
1,630 Visualizações
(@guilfnts)
Posts: 9
Active Member
Topic starter
 

Pessoal,

estou utilizando a MACRO abaixo, ela está funcionando. Porém está dando o erro ao final dele: "A variável do objeto ou a variável do bloco "With' não foi definida."

Aonde está o Wally (erro) ?

Obrigado!!

Sub localiza()

    Dim localizador As Range, i As Long
    i = 2
    With Plan1.Range("A1:A10000")
        Set localizador = .Find("OK", LookIn:=xlValues)
        If Not localizador Is Nothing Then
            ENDERECO = localizador.Address
            Do
                Rows(localizador.Row).Cut
                Plan2.Select
                Plan2.Rows(i).Select
                Plan2.Paste
                Plan1.Select
                Set localizador = .FindNext(localizador)
                i = i + 1
            Loop While Not localizador Is Nothing And localizador.Address <> ENDERECO
        End If
    End With
    Application.CutCopyMode = False
End Sub

 
Postado : 18/08/2016 9:14 am
(@osvaldomp)
Posts: 859
Prominent Member
 

Experimente acrescentando a linha abaixo em azul:

Set localizador = .FindNext(localizador)
If localizador Is Nothing Then Exit Sub

Osvaldo

 
Postado : 18/08/2016 9:55 am
(@osvaldomp)
Posts: 859
Prominent Member
 

Abaixo uma versão sem o uso de 'Select' ;) :P

Sub localizaV2()
 Dim localizador As Range, i As Long, ENDERECO As String
    i = 2
    With Plan1.Range("A1:A10000")
        Set localizador = .Find("OK", LookIn:=xlValues)
        If Not localizador Is Nothing Then
            ENDERECO = localizador.Address
            Do
                Rows(localizador.Row).Cut
                Sheets("Plan2").Rows(i).EntireRow.Insert Shift:=xlDown, CopyOrigin:=True
                Set localizador = .FindNext(localizador)
                If localizador Is Nothing Then Exit Sub
                i = i + 1
            Loop While Not localizador Is Nothing And localizador.Address <> ENDERECO
        End If
    End With
End Sub

obs. não consegui editar o post anterior :(

Osvaldo

 
Postado : 18/08/2016 10:05 am
(@guilfnts)
Posts: 9
Active Member
Topic starter
 

Muito obrigado Osvaldo!

Resolveu meu problema!!!

:D :D :D

 
Postado : 18/08/2016 12:37 pm
(@guilfnts)
Posts: 9
Active Member
Topic starter
 

Osvaldo, só mais uma ajuda. rs

eu estou tentando colar essas informações dentro de uma Tabela. Porém, a Macro sempre cola fora da Tabela, abaixo dela.

a Tabela começa na A5:N5, e sempre são inseridos mais dados.

 
Postado : 18/08/2016 1:52 pm
(@osvaldomp)
Posts: 859
Prominent Member
 

eu estou tentando colar essas informações dentro de uma Tabela. Porém, a Macro sempre cola fora da Tabela, abaixo dela.
a Tabela começa na A5:N5, e sempre são inseridos mais dados.

O seu código insere linhas, iniciando na linha 2 (i=2), depois na 3, 4, ...(i=i+1), e nelas cola os dados, sendo que o usual é colar os dados na primeira linha vazia abaixo da tabela. Não sei se no seu caso seria viável colar logo abaixo da tabela ao invés de inserir linhas. Se sim, acho que vale a pena alterar o seu código.

Mas se você prefere continuar a inserir linhas e quiser alterar a linha de partida, basta alterar no código o valor inicial de 'i'. Por exemplo, se quiser inserir primeiro na linha 5, altere para i=5 ;) .

Osvaldo

 
Postado : 18/08/2016 2:41 pm
(@guilfnts)
Posts: 9
Active Member
Topic starter
 

Eu prefiro buscar na última usada e colar abaixo dela.

Como não sou expert de Macro, estou aprendendo agora. Peguei um outro código que eu tinha de pesquisar a ultima usada e colar abaixo.

Porém está dando erro.

Sub localizaV2()
Dim localizador As Range, i As Long, ENDERECO As String
    i = 2
    With Plan5.Range("o1:o10000")
        Set localizador = .Find("BOK", LookIn:=xlValues)
        If Not localizador Is Nothing Then
            ENDERECO = localizador.Address
            Do
                Rows(localizador.Row).Cut
                Plan7.Select
                Range("A5").Select
                Selection.End(xlDown).Select
                ActiveCell.Offset(1, 1).PasteSpecial Paste:=xlPasteValues

            Loop While Not localizador Is Nothing And localizador.Address <> ENDERECO
        End If
    End With
End Sub
 
Postado : 19/08/2016 5:40 am
(@guilfnts)
Posts: 9
Active Member
Topic starter
 

Segue a planilha que estou utilizando.

Eu necessito que o que está como "BOK" na Plan5 vá para a Plan7 dentro da tabela.

Já tentei vários códigos, mas ele acaba sempre colando abaixo da tabela.

 
Postado : 19/08/2016 8:32 am
(@osvaldomp)
Posts: 859
Prominent Member
 

Eu prefiro buscar na última usada e colar abaixo dela.

Experimente este código

Sub TransfereDados()
 Dim localizador As Range, ENDERECO As String
   Set localizador = Range("O:O").Find("BOK", LookIn:=xlValues)
    If Not localizador Is Nothing Then
     ENDERECO = localizador.Address
      Do
       Cells(localizador.Row, 1).Resize(, 15).Cut Plan7.Cells(Rows.Count, 1).End(3)(2)
       Set localizador = Range("O:O").FindNext(localizador)
       If localizador Is Nothing Then Exit Sub
      Loop While Not localizador Is Nothing And localizador.Address <> ENDERECO
    End If
End Sub

obs. no arquivo que você disponibilizou o código está no módulo de 'EstaPasta_de_trabalho', embora também funcione estando lá, o local indicado é em um módulo comum. Você pode aproveitar um dos 13 módulos vazios que existem no seu arquivo... :o :shock: ; mantenha na Plan5 o botão que dispara o código ;)

Osvaldo

 
Postado : 19/08/2016 5:07 pm
(@guilfnts)
Posts: 9
Active Member
Topic starter
 

Obrigado Osvaldo, tu é o mestre mesmo! :D :D :D :D

 
Postado : 22/08/2016 9:06 am