【烟花原创】VBA零基础之第28篇 对象(三)
上一篇讲到了对象,在VBA中,还有一个非常重要的概念:集合Collections
集合是一个包含一组类型相同的对象集。另外,其实集合自身也是一个对象。
下面列出一有些经常使用到的集合对象:
工作簿集合Workbooks 当前打开的所有Workbook对象的集合
工作表集合Worksheets 指定的或活动工作簿中所有Worksheet 对象的集合
图表集合Charts 指定的或活动工作簿中所有图表工作表的集合
表集合Sheets 指定的或活动工作簿中所有工作表的集合,可以包含 Chart 或 Worksheet 对象。
上述集合的英文名字后都带一个s(英文里的复数表示法)
在Excel中,很多对象都是从相应的对像集合中引用的。
列如:我们通过消息框显示指定工作簿(工作簿名为a.xlsm)的完整路径(目录和文件名)
Dim wb As Workbook
Set wb = Workbooks("a.xlsm")
MsgBox Workbooks("a.xlsm").FullName
MsgBox wb.FullName
'两种方法,其实都从引用工作簿集合(workbooks)
For Each…Next:集合和数组专用的循环。
语法:
For Each 成员变量 In group
语句
Exit For
语句
Next 成员变量
成员:必要参数,用来遍历集合或数组中所有元素的变量。
对于集合来说,成员可能是一个 Variant 变量、一个通用对象变量Object或任何特殊对象变量。
对于数组而言,成员只能是一个 Variant 变量。
Group:必要参数,对象集合或数组的名称(用户定义类型的数组除外)。
如果集合中至少有一个元素,就会进入 For...Each 块执行。
一旦进入循环,便先针对 group 中第一个元素执行循环中的所有语句。
如果 group 中还有其它的元素,则会针对它们执行循环中的语句,当 group 中的所有元素都执行完了,便会退出循环,然后从 Next 语句之后的语句继续执行。
一旦进入循环,便先针对 group 中第一个元素执行循环中的所有语句。
如果 group 中还有其它的元素,则会针对它们执行循环中的语句,当 group 中的所有元素都执行完了,便会退出循环,然后从 Next 语句之后的语句继续执行。
在循环中可以在任何位置放置任意个 Exit For 语句,随时退出循环。
Exit For经常在条件判断之后使用,例如 If...Then,并将控制权转移到紧接在 Next 之后的语句。
Exit For经常在条件判断之后使用,例如 If...Then,并将控制权转移到紧接在 Next 之后的语句。
可以将一个 For...Each...Next 循环放在另一个之中来组成嵌套式 For...Each...Next 循环。
但是每个循环的 element 必须是唯一的。
但是每个循环的 element 必须是唯一的。
如果省略 Next 语句中的 element,就像 element 存在时一样执行。
如果 Next 语句在它相对应的 For 语句之前出现,则会产生错误。
如果 Next 语句在它相对应的 For 语句之前出现,则会产生错误。
不能在 For...Each...Next 语句中使用用户自定义类型数组,因为 Variant 不能包含用户自定义类型。
示例1:
Dim sht As Worksheet
Dim strMsg As String
For Each sht In Worksheets
'遍历当前活动工作簿中的工作表集合
'FOR循环中的成员变量sht已经指定了类型为工作表类型
strMsg = strMsg & sht.Name & vbCrLf
Next
MsgBox strMsg
'通过消息框显示所有的工作表名称(不包含宏表,图形工作表)
示例2:
Dim sht
Dim strMsg As String
For Each sht In Worksheets
'遍历当前活动工作簿中的工作表集合
'FOR循环中的成员变量sht没有指定类型(Variant类型)
strMsg = strMsg & sht.Name &vbCrLf
Next
MsgBox strMsg
'通过消息框显示所有的工作表名称(不包含宏表,图形工作表)
赞 (0)