我正在使用以下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
答案 0 :(得分:4)
要删除行,您应该从下往上而不是自上而下:
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
更有效的方法是使用自动过滤器并避免一起循环。类似的东西:
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行)。
您应该根据需要调整这些假设。