无限…下一个循环:我该如何解决?
我试图删除单元格值不等于数组Ar()中的一个值的所有行。 当我把逻辑运算符NOT循环由于某种原因变得无限(excel冻结)。 在对面它完美地工作,万一如果我想要删除包含数组中的值的行。
问题在网上:
If Not .Cells(i, 10).Value = Ar(j) Then
我的代码:
Sub Tims() Dim LastRow As Long, LR As Long Dim i As Long, j As Long Dim t As Integer Dim Ar() As String Worksheets("Start").Activate t = Count("a", Range("A3:A14")) LR = Range("I3:I10").End(xlDown).Row Worksheets("Master").Activate Sheets("Master").Range("A100:A" & 100 + LR - 3).Value = Sheets("start").Range("I3:I" & LR).Value With Worksheets("Master") For j = 1 To LR - 2 ReDim Preserve Ar(j) Ar(j) = Cells(99 + j, 1) Next j End With With Worksheets("Master") LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row End With Worksheets("Master").Activate For j = 1 To LR - 2 For i = 1 To LastRow With Worksheets("Master") If Not .Cells(i, 10).Value = Ar(j) Then .Cells(i, 10).EntireRow.Delete i = i - 1 End If End With Next i Next j End Sub
造成无限循环的线是这一个:
i = i - 1
摆脱它,并取代这一点
For i = 1 To LastRow
有了这个
For i = LastRow To 1 Step -1
我明白了为什么你尝试了i = i - 1
,以避免每次删除行时跳过一行。 但是这不起作用:如果一行被删除,那么它被表格底部的一个空行代替,最终达到它。 这个空行显然不包含你的数组Ar(j)
任何值,所以它被删除,并被另一个空行取代,然后被删除,并被另一个空行replace,无限。
在debugging模式下,您可以自己计算出您的代码。
相反,只需使用Step -1
从下往上迭代即可。