作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我是一名优秀的程序员,十分优秀!