【发布时间】:2021-05-13 20:27:18
【问题描述】:
我正在努力解决以下问题:工作表中的三列,在 C 列中,有各种供应商名称(供应商 1、2、3、4、5 等),我想使用如果满足某些条件,则 for..each 与 if 语句的组合可删除整行。到目前为止,我已经想出了下面的代码。
代码是这样工作的,问题是它只删除给定范围内的一定数量的供应商记录。Egif 我的表中有 20 条“供应商 1”记录,代码删除了其中的 10 条,然后我必须再次手动运行代码才能删除其余部分。另一个问题是我的范围也可以是动态的,也许你也可以就此提出建议。我尝试将我的范围定义为整个 C 列,但这显然没有意义,长期而言。 (而且无论如何也没有解决必须多次运行代码的问题)
Sub peters()
Dim rng As Range
Dim cell As Range
Set rng = Sheet2.Range("C1:C37")
For Each cell In rng
If cell.Value = "Supplier 1" Or cell.Value = "Supplier 2" Then
cell.EntireRow.Delete
End If
Next cell
End Sub
【问题讨论】:
-
删除行/列时,最好从最后一行/列开始。如果你往下走,因为在删除一行后行会上升,所以不会检查旧删除位置的新行。 (因此在您的案例中只有一半删除的行)
标签: vba if-statement foreach