分享

跟烟花入门VBA之28:对象(三)

 fzchenwl 2015-03-31

 上一篇讲到了对象,在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 语句之后的语句继续执行。

  在循环中可以在任何位置放置任意个 Exit For 语句,随时退出循环。
  Exit For经常在条件判断之后使用,例如 If...Then,并将控制权转移到紧接在 Next 之后的语句。

  可以将一个 For...Each...Next 循环放在另一个之中来组成嵌套式 For...Each...Next 循环。
  但是每个循环的 element 必须是唯一的。

  如果省略 Next 语句中的 element,就像 element 存在时一样执行。
  如果 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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多