如果特定范围内的单元格全部为空,则删除整行

我想创build一个macros,如果特定范围内的所有单元格(10行中的每个行中的B到K)全部为空,则会删除整行。 我尝试了以下内容:

Dim i As Integer Dim rng As Range For i = 1 To 10 Set rng = Range("B" & i, "K" & i).SpecialCells(xlCellTypeBlanks) rng.EntireRow.Delete Next i 

如果有更多的空单元格的行,比如说1和2,删除行1,移动行2而不是删除行,所以它变成行1.然后它跳过移动的行,因为我总是增加,所以它永远不会再次检查行1。 有什么办法来检查刚刚删除的行是否真的非空,然后移动到下一个我?

顺便说一句:我正在使用Excel 2013。

为什么不使用CountA()来代替使用特殊单元呢?

 Sub t() Dim i& For i = 10 To 1 Step -1 If WorksheetFunction.CountA(Range("B" & i, "K" & i)) = 0 Then Rows(i).EntireRow.Delete End If Next i End Sub 

这样,如果没有空白,你可以避免任何错误。 另外,删除行时,build议从头开始,然后按Step -1开始。

编辑:

试试这个,可能会更快:

 Sub T() Dim rng As Range Set rng = Range("B1:K10") ' Since you're going to loop through row 1 to 10, just grab the blank cells from the start rng.SpecialCells(xlCellTypeBlanks).EntireRow.Select ' Just to show you what's being selected. Comment this out in the final code rng.SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub 

我build议先用F8进行testing,看看它是如何工作的。 在B1:K10范围内,它将首先select空白单元格的所有行。 然后,它会删除这些行。