Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba “循环中单元格的顺序”;对于每个单元格“;_Vba_Excel_Foreach_Ms Word - Fatal编程技术网

Vba “循环中单元格的顺序”;对于每个单元格“;

Vba “循环中单元格的顺序”;对于每个单元格“;,vba,excel,foreach,ms-word,Vba,Excel,Foreach,Ms Word,我想知道是否有一个规则,知道循环将以何种顺序进行 有办法改变吗 假设我在多个工作簿的多个工作表上有多个范围 如果使用索引而不是每个循环,可以定义“步骤”,告诉它如何循环索引: 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 &am

我想知道是否有一个规则,知道循环将以何种顺序进行

有办法改变吗


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

如果使用索引而不是每个循环,可以定义“步骤”,告诉它如何循环索引:

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()
),这同样适用于它们。

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

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

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

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

其他三个例子:

Excel工作表中的注释:根据注释所在单元格的地址,按照循环与单元格的顺序排列(见上文)

Word文档中的注释:从文档开始,按出现顺序排列

MS Word中的书签:按书签名称的字母顺序排列


2013年8月8日编辑

我刚刚发现了一些关于Word文档中书签顺序的有趣信息。事实上,有两个命令:

1.此循环:

    Dim BM As Bookmark
    For Each BM In ActiveDocument.Content.Bookmarks
    Next
将按
文档内容(范围)

2.此循环时:

    Dim BM As Bookmark
    For Each BM In ActiveDocument.Bookmarks
    Next
将根据书签名称按字母顺序进行迭代


当使用
For…Next
循环时,可以使用
步骤减号
参数反转顺序

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