2016-06-13 54 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