vba - For Each 循环的逆序

标签 vba excel foreach

VB 最强大的功能之一是能够循环访问集合中的对象,而无需引用索引 - foreach 循环。

我发现它非常有用,只想从集合中删除对象。

当从预定义对象(例如电子表格上的行)中删除对象时,如果我使用索引并从最大的对象开始并返回到第一个,则代码会更简单。 (使用迭代器的步骤-1)(否则需要一个偏移量,因为一旦删除事件对象,For every 会将枚举器指针移回到前一个对象)

例如。

For intA = 10 to 1 step -1 
    ' ...
Next

使用 For Each | 时怎么样?下一个 例如。

For each rngCell in Selection.Cells
    ' ...
Next

如何使用 foreach 循环语法向后循环?

最佳答案

使用 foreach 循环语法不可能向后循环。

作为替代方案,您可以使用For i = a To 1 Step -1循环:

Sub reverseForEach()
    Dim i As Long, rng As Range

    Set rng = ActiveSheet.Range("A1:B2")

    For i = rng.Cells.Count To 1 Step -1

        Debug.Print rng.item(i).Address
        ' Or shorthand rng(i) as the Item property 
        ' is the default property for the Range object.
        ' Prints: $B$2, $A$2, $B$1, $A$1

    Next i

End Sub

这适用于所有具有 Item 属性的集合。例如工作表、区域或形状。

注意:在 Range 对象上使用时的循环顺序是从右到左,然后向上。

关于vba - For Each 循环的逆序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24358183/

相关文章:

excel - 电子表格中的 VBA UserForm 标签

c# - 修改字典中的结构变量

vb.net - List(Of T).ForEach 中 Visual Basic 中的 Action(Of T)

javascript - jQuery foreach 中的 setTimeout

vba - 从 VBA 末尾删除回车符(alt+enter)

vba - 经过数据验证的 Excel 2016 条件格式单元格

excel - 模仿 "IN"运算符

excel - VBA错误: Definitions of property procedures for the same property are inconsistent,或属性过程有一个可选参数

javascript - 强制 javascript csv 格式字符串中的值成为文本

excel - VBA 运行时错误...但我无法单击调试