删除空行 – 使用VBA的MS Excel

我正在使用以下VBA删除列T中没有*的所有行。它的工作原理,但它一次只删除1行。 我必须运行vba 25次,才能删除列T中没有*的25行。您是否看到代码有问题?

Sub DeleteCells() 'Loop through cells A1:A10 and delete cells that contain an "x." For Each c In Range("t1:t35") If c <> "*" Then c.EntireRow.Delete Next End Sub 

要删除行,你应该从下往上而不是从上往下:

 Sub DeleteCells() Dim i As Long For i = 35 To 1 Step -1 If Range("T" & i).Value <> "*" Then Range("T" & i).EntireRow.delete Next i End Sub 

更有效的方法是使用自动filter,并避免一起循环。 就像是:

 Sub DeleteCellsFilter() Sheet1.Range("$T$1:$T$35").AutoFilter Field:=1, Criteria1:="<>*" Sheet1.UsedRange.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.delete Sheet1.UsedRange.AutoFilter End Sub 

这使得你应该改正一些假设:

1)我们正在与Sheet1交互2)您的范围是静态的(第1到35行)。

你应该适当地调整这些假设。