大家好,欢迎来到IT知识分享网。
第一章 入门篇
1.12 FOR EACH语句
对于给定初值、末值和步长的循环对象,我们用FOR循环语句。
for 变量名=x to y step n
“循环的内容”
Next
那么,不知道初值、末值和步长的对象集合,我们又想循环该集合里的每一个对象,该怎样进行循环呢?
我们用FOR EACH循环语句,它可以自动遍历给定的对象集合体的所有值。
它的编写格式也与FOR语句相似:
for each 变量名 in 对象集合
循环的内容
Next
FOR EACH语句的循环对象集合通常有:
1、Workbooks工作簿
For Each 变量 In Workbooks
在已经打开的工作簿之间进行循环。
2、Worksheets工作表
For Each 变量 In Worksheets
在当前工作簿的工作表之间进行循环。
3、Range单元格
(1)range(“区域”)
For Each 变量 In Range(“a1:f33”)
按照先横后直的原则,遍历”a1:f33″这个单元格区,也就是从”a1″单元格开始,”b1″、”c1″……一直到”f1″,再从第二行”a2″单元格开始,”b2″、”c2″……一直到”f2″,依次按行进行循环。
(2)Selection 鼠标选定区域
For Each 变量 In Selection
按照先横后直的原则,在鼠标选定的一片区域内逐个单元格进行循环。
(3)CurrentRegion语句返回的区域
For Each 变量 In Range(“a1”).CurrentRegion
按照先横后直的原则,在与基准单元格(本示范语句以a1单元格为基准单元格)相连接的区域内进行循环。
4、数组
For Each 变量 In Arr数组
在数组的每一个元素里进行循环。对于数组的用法,我们会在下一章节具体讲解。
示例:
科目 |
语文 |
数学 |
英语 |
美术 |
体育 |
A同学 |
99 |
64 |
25 |
60 |
79 |
B同学 |
81 |
99 |
37 |
98 |
23 |
C同学 |
76 |
68 |
96 |
82 |
68 |
D同学 |
67 |
89 |
62 |
39 |
54 |
E同学 |
82 |
82 |
62 |
65 |
85 |
F同学 |
23 |
83 |
77 |
59 |
60 |
在FOR循环语句里用到的这个表格,把上表中不及格的成绩填充为红色。假如我们无法判断该表格数据区域的最右边界和最下边界,我们可以用FOR EACH语句这样写:
先用鼠标选中表中的成绩,然后运行下面的代码:
Sub foreach()
For Each s In Selection
If s.Value < 60 Then
s.Interior.ColorIndex = 3
End If
Next
End Sub
让s变量在Selection单元格集合中遍历,它的值如果小于60,填充色就变为红色。这样写代码是不是更简便了?
或者用我们上节学到的CurrentRegion语句来写:
Sub foreach2()
For Each s In Range(“a1”).CurrentRegion
If s.Value < 60 Then
s.Interior.ColorIndex = 3
End If
Next
End Sub
我们不再手动写代码来判断表格的数据区域边界,而是让系统自动判断数据区域边界,也就不用再理会循环语句的初值、末值和步长,并让s变量遍历该区域内的每一个单元格对象,对每一个循环到的单元格对象进行我们想要的操作,这就是FOR EACH语句的魅力。
下面是FOR EACH语句的常用写法,各位可以自己把代码敲进去,执行一下,看看执行的结果是啥样的?
Sub foreach()
‘在工作簿中循环:
Dim s As Workbook
For Each s In Workbooks
MsgBox s.Name
Next
‘在工作表中循环:
Dim n As Worksheet
For Each n In Worksheets
MsgBox n.Name
Next
‘在单元格中循环:
Dim b As Range
For Each b In Range(“a1”).CurrentRegion
MsgBox b
Next
End Sub
在workbooks中循环时,是在已经打开的工作簿中循环。在worksheets中循环时,是在活动工作簿的工作表集合中循环。
本示范语句只是介绍了FOR EACH语句的基本写法,对循环对象的操作也是蜻蜓点水而已,循环到哪个对象时,就弹出哪个对象的名字或值。各位在实际应用时,就可以对循环到的对象进行自己想要进行的操作,比如工作簿的更名、保存、备份、拷贝、删除等,工作表的更名、拷贝、删除、移位等,单元格的统计、判断、剪切、拷贝、删除、赋值等,都可以在FOR EACH语句里进行操作。至于上面提到的对工作簿、工作表、单元格的各项操作,其实就是这些对象的方法或属性,大家只要敲出”对象.”(在上面这个程序里就是s.、n.、b.),后面需要操作动作对应的代码就在弹出菜单里显示啦,大家动一下你的鼠标,点击左键选择就OK啦!打开你的VB编辑器,试着敲一下代码,对这些对象操作一下吧!
往期精彩回顾:
学习VBA,报表做到飞 第一章 入门篇 1.11 CurrentRegion语句
学习VBA,报表做到飞 第一章 入门篇 1.10 END语句通常用法
学习VBA,报表做到飞 第一章 入门篇 1.9 END语句
我是云飞扬,职场财会人员,愿与大家分享表格制作和数据统计分析的技巧与方法,希望大家的工作更便捷,更轻松!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/163911.html