无限…下一个循环:我该如何解决?

我试图删除单元格值不等于数组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从下往上迭代即可。

Interesting Posts