Excluir ou Inserir Linhas com Base no Valor da Célula

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on August 23, 2023

Este tutorial demonstrará como excluir ou inserir linhas com base nos valores das células.

Excluir Linha com Base no Valor da Célula

Isso fará um loop em um intervalo e excluirá as linhas se a coluna A indicar “apagar”.

Sub ExcluirLinhasPeloValorDaCelula()

'Declarar variáveis
Dim UltimaLinha As Long, PrimeiraLinha As Long
Dim Linha As Long

With ActiveSheet
    'Definir primeira e última linhas
    PrimeiraLinha = 1
    UltimaLinha = .UsedRange.Rows(.UsedRange.Rows.Count).Row

    'Loop através das linhas (de baixo para cima)
    For Linha = UltimaLinha To PrimeiraLinha Step -1
        If .Range("A" & Linha).Value = "apagar" Then
            .Range("A" & Linha).EntireRow.Delete
        End If
    Next Linha
End With

End Sub

Devemos iniciar o loop com a linha inferior porque a exclusão de uma linha deslocará os dados, ignorando as linhas se o loop for feito de cima para baixo.

Além disso, observe que, em vez de inserir manualmente a última linha, calculamos a última linha usada.

Excluir Linha – Com Base no Filtro

No exemplo anterior, percorremos as linhas, excluindo cada linha que atende aos critérios. Como alternativa, podemos usar o AutoFiltro do Excel para filtrar as linhas com base em alguns critérios e, em seguida, excluir as linhas visíveis.

Sub Filtrar_E_Excluir_Linhas()

   'Declarar a variável ws
   Dim ws As Worksheet
   Set ws = ActiveSheet
    
   'Redefinir os filtros existentes
   On Error Resume Next
   ws.ShowAllData
   On Error GoTo 0

   'Aplique o filtro
   ws.Range("a1:d100").AutoFilter Field:=1, Criteria1:="apagar"
    
   'Excluir linhas
   Application.DisplayAlerts = False
   ws.Range("a1:d100").SpecialCells(xlCellTypeVisible).Delete
   Application.DisplayAlerts = True
    
   'Limpar filtro
   On Error Resume Next
   ws.ShowAllData
   On Error GoTo 0
  
End Sub

Excluir Linha com Base em Critérios de Célula

Isso fará um loop em um intervalo, excluindo linhas se a célula na coluna A atender a determinados critérios (< 0):

Sub ExcluirLinhasPeloValorDaCelula()

'Declarar variáveis
Dim UltimaLinha As Long, PrimeiraLinha As Long
Dim Linha As Long

With ActiveSheet
    'Definir primeira e última linhas
    PrimeiraLinha = 1
    UltimaLinha = .UsedRange.Rows(.UsedRange.Rows.Count).Row

    'Loop através das linhas (de baixo para cima)
    For Linha = UltimaLinha To PrimeiraLinha Step -1
        If .Range("A" & Linha).Value < 0 Then
            .Range("A" & Linha).EntireRow.Delete
        End If
    Next Linha
End With

End Sub

Excluir Linha se a Célula Estiver em Branco

Isso fará um loop em um intervalo, excluindo uma linha se uma célula na coluna A estiver em branco:

Sub ExcluirLinhasPeloValorDaCelula()

'Declarar variáveis
Dim UltimaLinha As Long, PrimeiraLinha As Long
Dim Linha As Long

With ActiveSheet
    'Definir primeira e última linhas
    PrimeiraLinha = 1
    UltimaLinha = .UsedRange.Rows(.UsedRange.Rows.Count).Row

    'Loop através das linhas (de baixo para cima)
    For Linha = UltimaLinha To PrimeiraLinha Step -1
        If .Range("A" & Linha).Value = "" Then
            .Range("A" & Linha).EntireRow.Delete
        End If
    Next Linha
End With

End Sub

Excluir Linha em Branco

Como alternativa, se quiser excluir uma linha se a linha inteira estiver em branco (clique no link para ver um método ligeiramente diferente), você pode usar este código

Sub ExcluirLinhasEmBranco()
 
'Declarar as variáveis
Dim UltimaLinha As Long, PrimeiraLinha As Long
Dim Linha As Long
 
With ActiveSheet
    'Definir a primeira e a última linha
    PrimeiraLinha = 1
    UltimaLinha = .UsedRange.Rows(.UsedRange.Rows.Count).Row
 
    'Loop através das linhas (de baixo para cima)
    For Linha = UltimaLinha To PrimeiraLinha Step -1
       If WorksheetFunction.CountA(.Rows(Linha)) = 0 Then
          .Rows(Linha).EntireRow.Delete
       End If
    Next Linha
End With
 
End Sub

Excluir Linha se a Célula Contiver Valor

Isso fará um loop em um intervalo, excluindo uma linha se a célula na coluna A não estiver em branco:

Sub ExcluirLinhaPeloValorDaCelula()

'Declarar as variáveis
Dim UltimaLinha As Long, PrimeiraLinha As Long
Dim Linha As Long

With ActiveSheet
    'Definir a primeira e a última linha
    PrimeiraLinha = 1
    UltimaLinha = .UsedRange.Rows(.UsedRange.Rows.Count).Row

    'Percorrer as linhas (de baixo para cima)
    For Linha = UltimaLinha To PrimeiraLinha Step -1
       If .Range("A" & Linha).Value <>"" Then
          .Range("A" & Linha).EntireRow.Delete
       End If
    Next Linha
End With

End Sub

Inserir Linha com Base no Valor da Célula

Isso fará um loop em um intervalo, inserindo linhas se uma determinada célula nessa linha disser “inserir”.

Sub InserirLinhaConformeValorCelula()

'Declarar as variáveis
Dim UltimaLinha As Long, PrimeiraLinha As Long
Dim Linha As Long

With ActiveSheet
    'Defina a primeira e a última linha
    PrimeiraLinha = 1
    UltimaLinha = .UsedRange.Rows(.UsedRange.Rows.Count).Row

    'Percorrer as linhas (de baixo para cima)
    For Linha = UltimaLinha To PrimeiraLinha Step -1
       If .Range("A" & Linha).Value = "inserir" Then
           .Range("A" & Linha).EntireRow.Insert
       End If
    Next Linha
End With

End Sub
vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA