我的宏有一个问题。它删除了满足某些条件的行。但是当几个连续的行满足这些条件时,会发生错误。当删除行时,其他行上移,因此如果行(2:2)和行(3:3)满足条件,则删除行(2:2),并上移行(3:3),因此它成为行(2:2),For循环转到另一行(第三行)。因此,过去是行(3:3),现在是行(2:2)的行被忽略,而不是删除。
为了处理这个主题,我认为这是足够的逆转为循环,所以它不会去从上到下,但从下到上。TE resulat将是双重检查的一些行,但没有行会被省略。
问题是我不知道如何修改For循环。我试着把'For x = startrow To endrow'改为'For x = endrow To startrow',但是没有用。
下面是代码:
Sub Repurchase_upload()
Dim Worksheet As Worksheets
startrow = Worksheets("GUTS").Cells(10, 1)
endrow = Worksheets("GUTS").Cells(11, 1)
For x = startrow To endrow 'I have tried to change this line into: 'For x = endrow To startrow', but it didn' help
If Cells(x, "A").Value <> "AA" And Cells(x, "A").Value <> "AB" And Cells(x, "A").Value <> "AC" And Cells(x, "A").Value <> "AD" And Cells(x, "A").Value <> "AE" And Cells(x, "A").Value <> "AH" And Cells(x, "A").Value <> "AI" And Cells(x, "A").Value <> "AF" And Cells(x, "A").Value <> "AG" Then
Cells(x, "A").EntireRow.Delete
End If
Next
End Sub
先谢谢大家,
致以最诚挚的问候,
阿图尔·鲁特科夫斯基
4条答案
按热度按时间f2uvfpb91#
如果要循环并删除行,则需要从底部开始,然后向上操作:
那么删除行就不会中断循环。
hsvhsicv2#
循环向前:
向后循环(在for循环的末尾使用
Step -1
):svujldwt3#
另一种方法是在每次删除后加上x=x-1,但是从下往上的方法更好。
1u4esq0p4#
此代码具有删除当前选择的整行的语法。
它也从底部开始,以降序方式步进For循环。