Ir ao conteúdo
  • Cadastre-se

Procurar e Excluir via VBA


Posts recomendados

Olá galera preciso de uma ajuda estou tentando montar um função no vba para localizar um conteúdo em um planilha e excluir, com a descrição Range("A:H").Find(pula_aba2).EntireRow.Delete eu consigo localizar e excluir só não estou conseguindo montar um Loop para que encontre o próximo conteúdo e assim sucessivamente.

segue abaixo que montei:

Sub Exemplo()
Set W = Sheets("C.Custo")
            W.Select
            W.Range("L2").Select
            pula_aba2 = W.Range("L2")

Set Y = Sheets("Balancete")
            Y.Select
            Y.Range("A1").Select
  'Estrutura de Repetição
Do While W.Range("L2") <> " "
       Y.Select
   Range("A:H").Find(pula_aba2).EntireRow.Delete
  W.Select
     ActiveCell.Offset(1, 0).Select
     pula_aba2 = ActiveCell.Value

Loop
End Sub
 

Link para o comentário
Compartilhar em outros sites

Veja se é isso a macro faz varredura nas col A ate H e busca todas as correspondências e exclui a linha inteira

Sub Exemplo_1()
Dim rng As Range, rngDel As Range, sAdrs As String, j As Long

Set W = Sheets("C.Custo")
    pula_aba2 = W.Range("L2")
Set Y = Sheets("Balancete")
            
With Y
   
   For j = 1 To 8 ' faz loop nas col A ate H
     
     Set rng = .Columns(j).Find(pula_aba2)
      If Not rng Is Nothing Then
         sAdrs = rng.Address
       Do
        If rngDel Is Nothing Then
         Set rngDel = rng                'agrupa cel encontradas
         Else
         Set rngDel = Union(rngDel, rng) 'agrupa cel encontradas
        End If
       Set rng = .Columns(j).FindNext(rng)
       Loop While Not rng Is Nothing And sAdrs <> rng.Address
      
      End If
      
      If Not rngDel Is Nothing Then
        rngDel.EntireRow.Delete 'Exclui as linhas encontradas
      End If
      
      Set rngDel = Nothing
 
   Next

End With

End Sub

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Boa tarde Basole, primeiro quero lhe agradecer, muito obrigado pela explicação, sou iniciante nesta questão essa função funciona perfeitamente só preciso acrescentar a seguinte situação.

A função irá pegar as informações contante na Plan C.Custo na Range L2 e executar a função que passou na Plan Balancete e depois precisa voltar na Plan C.Custo e descer um linha "exemplo Range L3" e executar novamente a função até que chegue em uma Range vazia da Plan C.Custo isso automaticamente.

Tentei incluir as linhas abaixo:

 W.Select
      ActiveCell.Offset(1, 0).Select
     pula_aba2 = ActiveCell.Value
     
     If ActiveCell.Value = "" Then
     Exit Sub

 

Desde já obrigado.

Link para o comentário
Compartilhar em outros sites

Ok entendi, veja se é isso: 

Sub Exemplo_1()
Dim rng As Range, rngDel As Range, sAdrs As String, j As Long, i As Long, W As Worksheet, _
Y As Worksheet, pula_aba2 As String

Set W = Sheets("C.Custo")
    pula_aba2 = W.Range("L2")
    i = 2
Set Y = Sheets("Balancete")


With Y
   Do While W.Range("L" & i) <> "" 'faz loop na coluna "L" ate a prx cel vazia
   
   For j = 1 To 8 ' faz loop nas col A ate H
     
     Set rng = .Columns(j).Find(pula_aba2)
      If Not rng Is Nothing Then
         sAdrs = rng.Address
       Do
        If rngDel Is Nothing Then
         Set rngDel = rng                'agrupa cel encontradas
         Else
         Set rngDel = Union(rngDel, rng) 'agrupa cel encontradas
        End If
       Set rng = .Columns(j).FindNext(rng)
       Loop While Not rng Is Nothing And sAdrs <> rng.Address
      
      End If
      
      If Not rngDel Is Nothing Then
        rngDel.EntireRow.Delete 'Exclui as linhas encontradas
      End If
      
      Set rngDel = Nothing
 
   Next
i = i + 1

Loop

End With

End Sub

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • mês depois...

Boa noite Basole,

Sua explicação acima foi muito boa e estou tentando usar em outra situação que pego uma coluna especifica exemplo coluna C, só que o conteúdo que estou procurando é números com pontos exemplo  5.1.1.01.0302.

Só que a formula só pega texto!

Se puder me ajudar ficou mais uma vez grato.

Link para o comentário
Compartilhar em outros sites

Em 26/07/2017 às 15:21, Basole disse:

Substitua esta linha no codigo que postei: 

 


Set rng = .Columns(j).Find(pula_aba2, LookIn:=xlValues, Lookat:=xlWhole)

 

Camarada mais uma vez lhe agradeço pela ajuda, tenho uma nova situação, neste código consigo colocar duas situações, exemplo: localiza "1.2.0.101" na coluna B achando o valor verifica se a coluna C está em  branco se tiver ele exclui.

Coluna B     | Coluna C                                         | Coluna D

5.1.3.01.02  | IMPOSTOS E TAXAS ESTADUAIS |  198,57

1.2.0.101     |                                                          |   2.266,00

1.2.0.101     | DIRETORIA GERAL                         |    0,00

 

Abraço...

Link para o comentário
Compartilhar em outros sites

Com esta alteração, o código vai procurar na coluna B, por exemplo, 

Se encontrar, verifica na mesma linha se na coluna C, contem algum dado, se estiver vazio, exclui.

*Mas vai fazer isso com as outras colunas tambem. 

 

Altere este trecho do código: 

 

     Do
       If rng.Offset(, 1) = "" Then
         If rngDel Is Nothing Then
           Set rngDel = rng
         Else
          Set rngDel = Union(rngDel, rng)
         End If
       End If

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

13 minutos atrás, Basole disse:

Com esta alteração, o código vai procurar na coluna B, por exemplo, 

Se encontrar, verifica na mesma linha se na coluna C, contem algum dado, se estiver vazio, exclui.

*Mas vai fazer isso com as outras colunas tambem. 

 

Altere este trecho do código: 

 


     Do
       If rng.Offset(, 1) = "" Then
         If rngDel Is Nothing Then
           Set rngDel = rng
         Else
          Set rngDel = Union(rngDel, rng)
         End If
       End If

No momento a é só essas colunas, deu certo obrigado.....

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...