È necessario verificare che ci siano spazi vuoti.
If WorksheetFunction.CountBlank(Worksheet.Columns("A:A")) > 0 Then
Worksheet.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
Si può semplicemente utilizzare On Error Resume Next per saltare la linea se non ci sono spazi vuoti, ma è generalmente preferibile per verificare una condizione specifica, piuttosto che assumere sapere quale sarà l'errore.
Per quanto posso vedere, otterresti il messaggio "Nessuna cella trovata" se ogni cella nella Colonna A ha un valore.
EDIT: Sulla base di commenti di @ brettdj, ecco un'alternativa che utilizza ancora CountBlank:
If WorksheetFunction.CountBlank(Intersect(worksheet.UsedRange, ws.Columns("A:A"))) > 0 Then
worksheet.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
Naturalmente UsedRange è notoriamente volubile e può essere più grande di quello che appare. Penso che sia migliore per determinare prima la gamma attuale, dove le righe devono essere cancellati e quindi controllare le SpecialCells in tale intervallo, ad esempio:
Sub DeleteRows()
Dim ws As Excel.Worksheet
Dim LastRow As Long
Set ws = ActiveSheet
LastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
With ws.Range("A2:A" & LastRow)
If WorksheetFunction.CountBlank(.Cells) > 0 Then
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
End With
End Sub
Un'ultima nota - ho cambiato la variabile da "foglio di lavoro" a "ws "come" foglio di lavoro "è una parola riservata in Excel.
fonte
2011-10-24 14:39:12
+1 per una risposta efficace – brettdj
Spiegare cosa fanno esattamente queste righe aggiuntive sarebbe di grande aiuto :-) – Enissay