【发布时间】:2015-07-06 15:10:12
【问题描述】:
我正在尝试根据另一个工作表中的范围删除一个工作表上的行。根据我有限的 VBA 经验,我认为这里的问题可能很简单。这是我写的代码:
Sub LimitedElements()
imax = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
For i = 2 To imax
If Sheets("test").Cells(j, 1).Value = Sheets("Limited Elements").Range("A1:A10") Then
Rows(i).EntireRow.Delete
End If
Next i
End Sub
我收到一条消息“应用程序定义或对象定义错误”。
谁能告诉我我做错了什么?或者,如果这只是一种愚蠢的做法,我应该采取不同的做法?
【问题讨论】:
-
删除行后必须减少'i',否则可能会跳过一些行
-
我建议您在删除时向后循环遍历您的范围(对于 i = imax 到 2 步 -1),否则您最终会得到意想不到的结果。
-
你说的倒循环是对的。我的新代码似乎一直在运行,直到改变方向。我将不得不考虑为什么会这样。
标签: vba excel range rows delete-row