如何反转For循环

时间:2013-07-30 10:06:17

标签: excel vba excel-vba

我的宏有问题。它会删除满足某些条件的行。但是,当连续几行完全满足这些标准时,就会发生错误。删除行时,其他行向上移动,因此如果行(2:2)和行(3:3)满足条件,则删除行(2:2)并向上移动行(3:3) ,因此它变为row(2:2),For循环进入另一行(第三行)。因此,以前行(3:3)和现在是行(2:2)的行被省略并且不会被删除。
为了处理这个话题,我认为它足以逆转For循环,因此它不会从上到下而是从下到上。 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  

提前全部谢谢你,
最诚挚的问候,
Artur Rutkowski

3 个答案:

答案 0 :(得分:20)

如果您正在循环和删除行,则需要从底部开始并进行操作:

For x = endrow To startrow step -1

然后删除行不会破坏你的循环。

答案 1 :(得分:4)

循环前进:

For i = 1 To 10
    'Do something
Next i

向后循环(在for循环结束时使用Step -1):

For i = 10 To 1 Step -1
    'Do something
Next i

答案 2 :(得分:1)

另一种选择是在每次删除后放置x = x-1。但是自下而上的工作更好。