2016-06-13 98 views
0

我正在创建一个宏,删除列B中不包含任何数据的所有行。任何帮助,将不胜感激。这是我现在得到的。使用VBA删除具有空“B”列的所有行

Sub DeleteAllEmptyBRows() 
Dim lr As Long 
lr = Cells(Rows.Count, "B").End(xlUp).Row 
    For Each cell In Range("B1:B" & lr) 
     If cell.Value = "" Then 
      cell.Row.Delete 
      Exit Sub 
     End If 
    Next cell 
End Sub 

回答

3

您可以使用SpecialCells为此在一个快线:

Range("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

我会用上面的,同时也为自己的知识,这里是你如何能做到这一点下面的代码:

Sub DeleteAllEmptyBRows() 
Dim lr As Long, i& 

lr = Cells(Rows.Count, "B").End(xlUp).Row 

For i = lr To 1 Step -1 'Since you're deleting rows, start at the end, and work upwards 
    If Cells(i, 2).Value = "" Then 
     Cells(i, 2).EntireRow.Delete 
    End If 
Next i 

End Sub 

注意,您必须在您的Exit Sub,在第一时间之后的行被删除。我删除了这个,因为你想遍历范围内的所有单元格。再次,这是一个循环,因此比上面简单的一个班轮需要更长的时间,并且有更多的错误空间。

+1

才意识到自己忘了谢谢。这是完美的,非常感谢你! – Rob

1

你缺少一些参数:

Cells(cell.Row, 2).Delete Shift:=xlUp 

如果你需要整行,只是更改为:

cell.Row.EntireRow.Delete