Este tutorial irá demonstrar diferentes maneiras de excluir linhas e colunas no Excel usando VBA.
Excluir Linha ou Coluna Inteira
Para excluir uma linha inteira em VBA use esta linha de código:
Rows(1).Delete
Nota que usamos o método Excluir para excluir uma linha.
Em vez de referenciar o objeto Rows, você pode referenciar linhas baseadas no objeto Range com EntireRow:
Range("a1").EntireRow.Delete
Simplesmente para apagar uma coluna inteira, use estas linhas de código:
Columns(1).Delete
Range("a1").EntireColumn.Delete
Delete Multiple Rows or Columns
Usando a mesma lógica, você também pode excluir várias linhas de uma só vez:
Rows("1:3").Delete
ou colunas:
Columns("A:C").Delete
Notice aqui nós referenciamos as linhas e colunas específicas com números / letras rodeadas por citações.
Obviamente, você também pode referenciar a linha inteira de um intervalo:
Range("a1:a10").EntireRow.Delete
Nota: Os exemplos abaixo apenas demonstram a eliminação de linhas, no entanto, como você pode ver acima, a sintaxe é virtualmente idêntica para eliminar colunas.
Apagar Linhas em Branco / Vazias
Este exemplo irá apagar uma linha se a linha inteira estiver em branco:
Sub DeleteRows_EntireRowBlank()Dim cell As RangeFor Each cell In Range("b2:b20") If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then cell.EntireRow.Delete End IfNext cellEnd Sub
Faz uso da função de planilha do Excel: COUNTA.
Delete Row if Cell is Blank
Isso excluirá uma linha se uma coluna específica naquela linha estiver em branco (neste caso coluna B):
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Delete Row Based on Cell Value
Isso fará um loop através de um intervalo, e excluirá linhas se um determinado valor de célula naquela linha disser “delete”.
Sub DeleteRowswithSpecificValue()Dim cell As RangeFor Each cell In Range("b2:b20") If cell.Value = "delete" Then cell.EntireRow.Delete End IfNext cellEnd Sub
Exemplos de Apagar Linha e Coluna
Delete Duplicate Rows
Este código irá apagar todas as linhas duplicadas em um intervalo:
Range("b2:c100").RemoveDuplicates Columns:=2
Notificação que definimos Colunas:=2. Isto diz a VBA para verificar as duas primeiras colunas de dados ao considerar se as linhas são duplicadas. Uma duplicata só é encontrada quando ambas as colunas têm valores duplicados.
Se tivéssemos definido isto como 1, apenas a primeira linha teria sido verificada para valores duplicados.
Delete Table Rows
Este código irá apagar a segunda linha em uma Tabela referenciando ListObjects.
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
Delete Filtered Rows
Para apagar apenas linhas que são visíveis após a filtragem:
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
Delete Rows in Range
Este código irá apagar todas as linhas no range:
Range("a1:a10").EntireRow.Delete
Apagar Linhas Seleccionadas
Este código irá apagar todas as linhas seleccionadas:
Selection.EntireRow.Delete
Apagar última linha
Este código irá apagar a última linha utilizada na coluna B:
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
Alterando 2 para 1, pode apagar a última linha utilizada na coluna A, etc.:
Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
Delete Columns by Number
Para apagar uma coluna pelo seu número, use um código como este:
Columns (2).Delete