【发布时间】:2020-02-20 22:35:34
【问题描述】:
当 T、U、V 列在同一行的值为 0 时,我试图删除列。但是,我使用的代码只删除了其中的一些,如下所示,即使我已经指定在我分配的特定单元格中删除它们,某些行的 T、U、V 列仍有 0。我的代码的哪一部分做错了?
Dim j As Long
Dim lr As Long
lr = Sheets(1).Cells(Rows.Count, "U").End(xlUp).Row
For j = 1 To lr
If Sheets(1).Cells(j, 21).Value = 0 And Sheets(1).Cells(j, 22).Value = 0 And Sheets(1).Cells(j, 23).Value = 0 Then
Sheets(1).Range("T" & j & ":W" & j).Delete
j = j + 1
End If
Next
所以最终我希望它成为
【问题讨论】:
-
如果你删除了一行,那么它下面的行就会使用那个行号,所以代码会跳过它。这可能是为什么?
-
如果您删除或添加行,您的循环需要倒退
For j = lr To 1 Step -1否则删除/添加会更改总行数并且您的循环会跳转。 -
更好——使用
Union创建一个要删除的范围,最后一步删除。或者使用Range.AutoFilter并在末尾删除可见行。 -
@cena 查看您问题上方的链接。之前已经被问过几次了。在询问之前搜索可能非常有效。
-
@Pᴇʜ 是的,我进行了搜索,但我错过了 For j = lr To 1 Step -1 的部分。还是谢谢