Excluir ou inserir linhas com base no valor da célula

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 por um intervalo e excluirá as linhas se a coluna A disser “excluir”.

1234567891011121314151617181920 Sub DeleteRowsBasedonCellValue ()'Declarar VariáveisDim LastRow As Long, FirstRow As LongDim Row As LongCom ActiveSheet'Definir a primeira e a última linhaFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (de baixo para cima)Para Row = LastRow to FirstRow Passo -1If .Range ("A" & Row) .Value = "delete" Then.Range ("A" & Row) .EntireRow.DeleteFim sePróxima linhaTerminar comEnd Sub

Devemos iniciar o loop com a linha inferior porque a exclusão de uma linha mudará os dados, pulando as linhas se você fizer um loop de cima para baixo.

Além disso, observe que em vez de inserir manualmente na ú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 linhas com base em alguns critérios e, em seguida, excluir as linhas visíveis:

12345678910111213141516171819202122232425 Sub FilterAndDeleteRows ()'Declare a variável wsDim ws como planilhaDefinir ws = ActiveSheet'Redefinir Filtros ExistentesOn Error Resume Nextws.ShowAllDataNo erro GoTo 0'Aplicar filtrows.Range ("a1: d100"). Campo do filtro automático: = 1, Criteria1: = "excluir"'Excluir linhasApplication.DisplayAlerts = Falsews.Range ("a1: d100"). SpecialCells (xlCellTypeVisible) .DeleteApplication.DisplayAlerts = True'Filtro limpoOn Error Resume Nextws.ShowAllDataNo erro GoTo 0End Sub

Excluir linha com base nos critérios da célula

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

1234567891011121314151617181920 Sub DeleteRowsBasedonCellValue ()'Declarar VariáveisDim LastRow As Long, FirstRow As LongDim Row As LongCom ActiveSheet'Definir a primeira e a última linhaFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (de baixo para cima)Para Row = LastRow to FirstRow Passo -1If .Range ("A" & Row) .Value <0 Then.Range ("A" & Row) .EntireRow.DeleteFim sePróxima linhaTerminar comEnd Sub

Programação VBA | O Code Generator funciona para você!

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:

1234567891011121314151617181920 Sub DeleteRowsBasedonCellValue ()'Declarar VariáveisDim LastRow As Long, FirstRow As LongDim Row As LongCom ActiveSheet'Definir a primeira e a última linhaFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop através das linhas (de baixo para cima)Para Row = LastRow to FirstRow Passo -1If .Range ("A" & Row) .Value = "" Then.Range ("A" & Row) .EntireRow.DeleteFim sePróxima linhaTerminar comEnd Sub

Excluir linha em branco

Como alternativa, se você deseja excluir uma linha se toda a linha estiver em branco (clique no link para obter um método um pouco diferente), você pode usar este código:

1234567891011121314151617181920 Sub DeleteBlankRows ()'Declarar VariáveisDim LastRow As Long, FirstRow As LongDim Row As LongCom ActiveSheet'Definir a primeira e a última linhaFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop através das linhas (de baixo para cima)Para Row = LastRow to FirstRow Passo -1Se WorksheetFunction.CountA (.Rows (Row)) = 0 Then.Rows (Row) .EntireRow.DeleteFim sePróxima linhaTerminar comEnd 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:

1234567891011121314151617181920 Sub DeleteRowsBasedonCellValue ()'Declarar VariáveisDim LastRow As Long, FirstRow As LongDim Row As LongCom ActiveSheet'Definir a primeira e a última linhaFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (de baixo para cima)Para Row = LastRow to FirstRow Passo -1If .Range ("A" & Row) .Value "" Then.Range ("A" & Row) .EntireRow.DeleteFim sePróxima linhaTerminar comEnd Sub

Cansado de procurar exemplos de código VBA? Experimente o AutoMacro!

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”:

1234567891011121314151617181920 Sub InsertRowsBasedonCellValue ()'Declarar VariáveisDim LastRow As Long, FirstRow As LongDim Row As LongCom ActiveSheet'Definir a primeira e a última linhaFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (de baixo para cima)Para Row = LastRow to FirstRow Passo -1If .Range ("A" & Row) .Value = "inserir" Then.Range ("A" & Row) .EntireRow.InsertFim sePróxima linhaTerminar comEnd Sub

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave