0

我想知道是否有一条规则可以知道循环的执行顺序?

有没有办法改变它?

假设我在多个工作簿的多个工作表上有多个范围。

4

2 回答 2

6

是的,循环运行总是有规则的。你可以做一些实验,但我会给你一些信息(据我记得)。

工作簿:顺序是从第一次打开/创建到最后一次打开/创建。

工作表/工作表:从左到右的顺序,您可以在应用程序中看到它们。

单元格(在范围内):它从左到右排在第一位,然后移动到下一行(就像我们用英语读写一样)。

其他三个例子:

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

做实验很容易,我承认——通常知道循环迭代顺序很重要。

于 2013-05-31T22:23:18.287 回答
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>)),这将与工作表和工作簿相同。

于 2013-05-31T13:16:18.347 回答