Para o seu primeiro critério, você pode contar quantas células em cada linha têm valores usando a função CountA()
da planilha.
Snippet de código:
If .CountA(ws.rows(r)) = 0
Você só deseja excluir a linha se houver mais de uma linha vazia em sequência, então adicionamos isso à nossa declaração If...Then
. Isso verifica a linha acima com r - 1
:
... And .CountA(ws.Rows(r - 1)) = 0
Isto verifica se a linha acima está em branco; somente se for, ele adicionará sua linha a um intervalo especial que acompanhará as exclusões de linha: delRng
.
Este é o código do VBA inteiro:
Sub removeEmptySpaces()
Dim r As Long, ws As Worksheet, delRng As Range
Set ws = ThisWorkbook.Worksheets(1)
With Application.WorksheetFunction
For r = 2 To lastRow(ws)
If .CountA(ws.Rows(r)) = 0 And .CountA(ws.Rows(r - 1)) = 0 Then
If delRng Is Nothing Then
Set delRng = ws.Rows(r)
Else
Set delRng = Union(ws.Rows(r), delRng)
End If
End If
Next
End With
If Not delRng Is Nothing Then delRng.Delete
End Sub
Function lastRow(ws As Worksheet, Optional col As Variant = 1) As Long
With ws
lastRow = .Cells(.Rows.Count, col).End(xlUp).Row
End With
End Function