0

我正在使用以下 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
4

1 回答 1

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 行)。

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

于 2013-10-10T20:12:44.277 回答