如何使for-each循环倒序运行

3

我用VBA写了一个小脚本,它会检查给定范围内的单元格值是否与列表中的某个值匹配。如果匹配,则保留该单元格,否则删除它。我想知道如何让它倒序运行,因为正序运行会导致问题。我已经做了一些研究,并尝试在for循环开头的行末尾添加“Step -1”,但在这种情况下不起作用。

Set Rng = Range("A9:V9")
For Each cell In Rng
    If Not myList.Exists(cell.Value) Then
        cell.EntireColumn.Delete
    End If
Next

谢谢大家的回答,我非常感谢你们的帮助! - John A
2个回答

6
在这种情况下,可能像这样的for循环已经足够了:
Option Explicit

Sub TestMe()

    Dim rng As Range
    Dim cnt As Long

    Set rng = Range("A9:V9")

    For cnt = rng.Cells.Count To 1 Step -1
        Cells(rng.Row, cnt) = 23
        Stop
    Next

End Sub

我已经加上了Stop,以便您可以看到所引用的单元格。一旦按下Stop,请继续使用F5


0
Richard,你完全正确,“Step -1”方法在这种情况下是正确的解决方案。你只需要改变变量引用以使其与循环配合工作即可。
例如:
Set Rng = Range("A9:V9")
For i = rng.rows.count to 1 step -1
    for j = rng.columns.count to 1 step -1
        if not myList.Exists(rng.cells(i, j).value) then
           rng.cells(i, j).entirecolumn.delete ' This probably won't work, but you get the idea.
        end if
    next j
next i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接