探索Excel中下拉选项的创建技巧与实用方法
447
2022-10-14
在对象中循环——For Each-Next结构的使用
为方便操控Excel对象,VBA提供了For Each-Next结构,可以在对象组成的集合中循环,给集合中的所有对象执行操作,或者集合中满足相关条件的对象执行操作。
For Each-Next结构的语法如下:
For Each 对象变量In 对象集合
[语句块]
[Exit For]
[语句块]
Next [对象变量]
说明:
按照惯例,方括号中的内容表示可选项。
Exit For语句表示提前退出循环。
无需知道集合中的对象数目。
可以与其它语法结构相互嵌套。
下面通过示例来演示For Each-Next结构的使用。
示例1:下面的代码遍历当前工作簿中的工作表并依次显示工作表的名字。
Sub ForEach1()
‘遍历工作表集合并依次显示工作表的名字
For Each wks In Worksheets
MsgBox “工作表的名字是:”& wks.Name
Next wks
End Sub
示例2:通过改进上面的示例1,在显示工作表名字时表明是第几个工作表,最后统计出工作簿中的工作表数,代码如下。
Sub ForEach2()
i = 0 ‘给变量赋初始值
For Each wks In Worksheets
i = i + 1
MsgBox “第” &i & “个工作表的名字是:” & wks.Name
Next wks
MsgBox “本工作簿共有” & i& “个工作表.”
End Sub
示例3:下面的代码遍历当前工作表的单元格区域A1:A5,并依次显示每个单元格中的内容。
Sub ForEach3()
‘遍历单元格区域A1:A5并依次显示单元格内容
For Each cell In Range(“A1:A5”)
MsgBox cell.Value
Next cell
End Sub
示例4:下面的代码与示例3的效果相同,但我们设置了代表单元格区域的对象变量并赋值,让For Each结构在对象变量代表的区域内循环遍历。
Sub ForEach4()
‘设置rng变量的值
Set rng = Range(“A1:A5”)
‘遍历rng对象变量代表的单元格区域并依次显示单元格内容
For Each cell In rng
MsgBox cell.Value
Next cell
End Sub
示例5:下面的代码结合If-Then结构判断满足相应条件的单元格数。
如下图所示,要统计成绩大于80分的学生人数。
运行下面的代码即可。
Sub ForEach5()
‘设置rng变量的值
Set rng = Range(“B2:B9”)
i = 0
‘遍历rng对象变量代表的单元格区域
‘并判断单元格中的值是否大于80
For Each cell In rng
If cell.Value > 80 Then
i = i + 1
End If
Next cell
MsgBox “共有” & i& “名学生超过80分.”
End Sub
代码在For Each循环结构中使用If-Then语句来检查每个单元格中的值,如果其值大于80,变量i就增加1。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。