For Each...Next 语句
针对一个数组或集合中的每个元素,重复执行一组语句。
语法:
For Each element In group '就是在数组或集合中开始对每个元素进行遍历寻找
[statements] '寻找情况,即你要运行的代码
[Exit For] '可随时退出遍历寻找
[statements] '寻找情况,即你要运行的代码
Next [element] '寻找下一个元素 这跟for next 循环是一样的
说明:
如果数组或集合group中至少有一个元素,就会进入 For...Each 块执行。一旦进入循环,便先针对数组或集合group中第一个元素执行循环中的所有语句。如果 group 中还有其它的元素,则会针对它们执行循环中的语句,当 group 中的所有元素都执行完了,便会退出循环,然后从 Next 语句之后的语句继续执行。
在循环中可以在任何位置放置任意个 Exit For 语句,随时退出循环。Exit For经常在条件判断之后使用,例如If then,并将控制权转移到紧接在 Next 之后的语句。
你要理解含义比较重要的是group对象,即集合或数组的名称(用户定义类型的数组除外)。
Dim Found, MyObject, MyCollection 'Found是自己定义的为了便于理解,MyObject是MyCollection中的一个成员,即定MyObject是数组或集合MyCollection中的一个元素
Found = False ' 设置变量初始值。
For Each MyObject In MyCollection ' 对每个成员作一次迭代。
If MyObject.Text = "Hello" Then ' 如果MyObject的Text 属性值等于“Hello”。
Found = True ' 将变量 Found 的值设成 True。
Exit For ' 退出循环。
End If
Next
上面的例子你不太好理解的话,再举个简单的例子 :
aa = Array(1, 2, 3, 4) '这里数组aa即使一种group对象
For Each b In aa '在aa中遍历,即从第一个元素1开始查找
Print b ‘打印出b
Next '下一个元素或退出
这几句打印出来的结果是 1 2 3 4,也就是说对aa中每个元素进行了遍历
如果把上面的Print b 改为 If b = 3 Then Print b 则打印结果就是 3
集合或数组group可以是数组,控件,应用程序对象等,如上面的数组, 驱动器Drives 集合,文件Files 集合,文件夹Folders 集合,窗体Forms集合,还有VBA中的autocad,excel对象之类的。
For Each...Next 语句
针对一个数组或集合中的每个元素,重复执行一组语句。
给你举个最最简单的例子:
首先在窗体上随便放一堆控件。。然后执行下面的代码
Private Sub Command1_Click()
On Error Resume Next
Dim ct As Control
For Each ct In Me '在本窗体中所有的控件循环
ct.Enabled = False '将控件的enabled设置为false(如果支持enabled属性的话)
Next
End Sub
Dim a(0 To 9) '定义数组a
Private Sub Form_Load() '载入窗体时触发的事件
For i = 0 To 9 '产生10次循环
a(i) = i '赋值,数组a中对应项依次为0~9
Next '循环
For Each e In a '遍历数组a
f = f + e '数组a内每一个数都累加到变量f
Next '循环
'弹出带信息符号的对话框
MsgBox "数组 a 中所有数据的和是" & f, vbInformation, "计算结果"
End '终止程序
End Sub '终止 Sub
'新建一个标准EXE,直接复制这段代码运行即可
Private Sub Form_click()
Dim a As Control
For Each a In Controls
If a.Name = Text1 Then a.Text = "找到文本框1"
Next
End Sub