我想知道是否有一条规则可以知道循环的执行顺序?
有没有办法改变它?
假设我在多个工作簿的多个工作表上有多个范围。
是的,循环运行总是有规则的。你可以做一些实验,但我会给你一些信息(据我记得)。
工作簿:顺序是从第一次打开/创建到最后一次打开/创建。
工作表/工作表:从左到右的顺序,您可以在应用程序中看到它们。
单元格(在范围内):它从左到右排在第一位,然后移动到下一行(就像我们用英语读写一样)。
其他三个例子:
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
做实验很容易,我承认——通常知道循环迭代顺序很重要。
如果你使用索引而不是每个循环,你可以定义'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>)
),这将与工作表和工作簿相同。