在对象中循环——For Each-Next结构的使用
发布时间:2023-02-09 20:12:58
前面我们介绍过Excel的对象模型及一些常用的对象,也解过对象变量的概念及声明对象变量的方法。其实,在绝大多数情况下,我们都是通过使用Excel VBA操纵Excel对象来达到我们的目的。例如,我们可以操作工作表对象,为工作表命名、排序工作表、统计工作表个数;我们可以操作单元格对象,在单元格区域中填充内容、查找有指定内容的单元格;等等。
为方便操控Excel对象,VBA提供了For Each-Next结构,可以在对象组成的集合中循环,给集合中的所有对象执行操作,或者集合中满足相关条件的对象执行操作。
使用For Each-Next结构,我们无需知道集合中对象的数目,只需要声明相应的对象变量,编写执行操作的指令。
For Each-Next结构的语法如下:
For Each 对象变量In 对象集合
[语句块]
[Exit For]
[语句块]
Next [对象变量]
说明:
按照惯例,方括号中的内容表示可选项。
对象变量在使用前需要进行声明。
Exit For语句表示提前退出循环。
无需知道集合中的对象数目。
可以与其它语法结构相互嵌套。
下面通过示例来演示For Each-Next结构的使用。
示例1:下面的代码遍历当前工作簿中的工作表并依次显示工作表的名字。
Sub ForEach1()
Dim wks As Worksheet ‘声明工作表对象变量
‘遍历工作表集合并依次显示工作表的名字
For Each wks In Worksheets
MsgBox “工作表的名字是:”& wks.Name
Next wks
End Sub
示例2:通过改进上面的示例1,在显示工作表名字时表明是第几个工作表,最后统计出工作簿中的工作表数,代码如下。
Sub ForEach2()
Dim wks As Worksheet ‘声明工作表对象变量
Dim i As Long ‘声明用于统计工作表数的变量
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()
Dim cell As Range ‘声明单元格对象变量
‘遍历单元格区域A1:A5并依次显示单元格内容
For Each cell In Range(“A1:A5”)
MsgBox cell.Value
Next cell
End Sub
示例4:下面的代码与示例3的效果相同,但我们设置了代表单元格区域的对象变量并赋值,让For Each结构在对象变量代表的区域内循环遍历。
Sub ForEach4()
Dim cell As Range, rng As Range ‘声明单元格对象变量
‘设置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()
Dim cell As Range, rng As Range ‘声明单元格对象变量
Dim i As Long ‘声明计数变量
‘设置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。


猜你喜欢
- WPS怎么画出缺角矩形的操作方法分享。在WPS编辑文档的时候,我们可以去里面的图形库中导入各种的图形来进行使用。那么如何去找到缺角矩形这个图
- 部分Win10用户在升级了1909系统后都遇到了一个相同的问题,那就是无法正常上网了。那么,Win10 1909更新后无法上网该怎么办呢?有
- 电脑里面硬盘的图标不正常,只有系统所在分区外有卷标,其他分区磁盘不显示卷标,有时候还出现硬盘图标损坏的问题,下面有个不错的解决方法,大家可以
- 很多小伙伴都因为需要考计算机二级而需要使用 Office 2010,网上资源又不好找,找到了又不好下载,下载了还不一定能安装并激活,那么在这
- 由于用户使用的win7系统版本比较老旧,所以用户在使用的时候经常会遇到一些问题。就有用户反映自己的win7系统上的任务计划程序不可用。那我们
- wnr是一款非常实用的计时和时间管理软件,支持设定时间、定时提醒,让你可以在工作的同时得以休息 ,那么wnr怎么用呢?来小编分享的wnr使用
- Apple 在重新设计 Mac App Store 方面做得非常出色,并且让寻找新应用程序变得更加容易。您去商店重新下载您之前购买的应用程序
- win10系统中自带有防止媒体共享功能,可防止windows media player中的媒体共享,我们只需启用它就可以让计算机上的任何用户
- 在播放PPT演示文稿时,增加恰当的幻灯片切换效果可以让整个放映过程体现出一种连贯感,还能让客户更加集中精力观看。1、在产品宣传演示文稿中,切
- 为什么打开我的电脑和关机时都要读软驱?很多朋友在使用Windows系统的过程中,都有遇到这样一个问题,就是打开我的电脑或关机时都要读一下软驱
- 盈通是属于盈通数码科技有限公司旗下的一个自主品牌,公司一直在走自主研发、生产和销售的路线,让盈通主板在短短的几年内就走在主板品牌的前沿。很多
- 许多用户在使用deepin Linux系统的时候觉得不是很好用,因为有些可以在Windows上使用的软件无法在上面使用,于是就想要吧deep
- The VBScript engine can be quickly registered by following these steps
- 如果Mac出现异常,通常的提示是尝试重置NVRAM。NVRAM或非易失性随机存取存储器在很多年前被称为PRAM(参数RAM)。NVRAM是M
- 在工作中,经常会用到电子公章,在wps文字中,我们也可以实现电子公章的制作,下面就让小编告诉你如何使用wps文字制作电子公章。使用wps文字
- 在win10系统中有非常多实用的小功能,需要我们去挖掘使用,例如录屏功能。往常我们使用需要录制视频的时候要去下载安装第三方软件,微软为了让用
- 如何在wps文字中设置文档的背景图片呢,对于新手来说还是有一定难度,怎么办?不用着急,下面小编就为你提供wps文字怎么设置背景图片的方法啦!
- 有的人会误解,机械硬盘如果一坏,只是某些磁道坏了,还是大部分数据可以恢复出来的,而SSD硬盘如果一坏,数据就无法恢复。  
- 我们在使用word编辑完数据之后,都会选择将word文档给打印出来,word文档时如何进行打印的呢。下面让小编为你带来word文档如何打印的
- Win10在理论上继承了Win7/Win8.1的优点,因此应该在各方面都超越“前辈”。但事实上,在Windows10正式版发布后的一个多月内