我想知道是否有规则要按顺序知道循环将会完成?
有没有办法改变它?
假设我在多个工作簿上的多个工作表上有多个范围。
答案 0 :(得分:5)
是的,总有规则要运行循环。你可以做一些实验,但我会给你一些信息(据我记得)。
工作簿:订单是从第一次打开/创建到最后一次打开/创建。
工作表/表格:从左到右的顺序,因为您可以在应用程序中看到它们。
单元格(范围内):它从左到右排在第一行,然后移到下一行(我们用英文读写)。
其他三个例子:
Excel工作表中的注释:基于注释所在单元格的地址,按循环与单元格的顺序排列(参见上文)。
Word文档中的注释:从文档开头,按出现顺序排列。
MS Word中的书签:按书签名称的字母顺序排列。
2013年8月8日编辑
我刚刚在Word文档中找到了有关书签顺序的有趣内容。实际上有两个订单:
1。此循环:
Dim BM As Bookmark
For Each BM In ActiveDocument.Content.Bookmarks
Next
将按照Document Content (Range)
2。虽然这个循环:
Dim BM As Bookmark
For Each BM In ActiveDocument.Bookmarks
Next
将根据书签名称按字母顺序迭代。
使用For...Next
循环时,您可以使用Step minus
参数反转订单。
进行实验很容易,我可以承认 - 通常知道循环迭代顺序很重要。
答案 1 :(得分:1)
如果你使用索引而不是每个循环,你可以定义'step'来告诉它如何遍历索引:
Sub test_forloop()
Dim rng As Range Dim i As Integer Dim strOut As String
Set rng = Range("A1:A10")
For i = 1 To rng.Cells.Count Step 1
strOut = strOut & rng.Cells(i).Address Next
MsgBox strOut
strOut = ""
' Now do it stepping backwards
For i = rng.Cells.Count To 1 Step -1
strOut = strOut & rng.Cells(i).Address Next
MsgBox strOut
End Sub
如果它们是同一个集合的成员(使用Worksheets(<index>)
),这与工作表和工作簿的工作方式相同。