• Excel:集合(Collection)


    一、概念.集合(Collection)

    Collection集合是我们在使用类时最常用到的对象。
    一个Collection对象代表一组相关的项目。
    集合是一组数据信息,存放于一个一维数组中,以便用户随时访问、增添、删除同类信息。
    当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。

    二、声明语法.集合

    集合的声明就单一很多了,因为集合和数组一样是VBA的内置对象,就可以直接用Dim声明,先看一下它的声明方法,如下图:

    但是这样声明的list集合还未分配内存空间,还不能直接使用集合的属性和方法,必须为list集合分配一个New Collection内存空间,才可以使用集合的属性和方法,如下图:

    我们看一下“本地窗口”中变量的值,在逐行运行代码时的状态,当运行第一行声明代码时,list的值为Nothing,可以理解为list存储的内容未知,当为list分配内存空间后,list的值就是空,可以理解为已知道list存的内容,只不过存储的内容为空而已,如下图:

    
    
    <iframe height=500 width=500 src="http://ww4.sinaimg.cn/mw690/e75a115bgw1f3rrbzv1m8g209v0diqv7.gif">
    

    所以就有很多初学者会问如下这样的问题,下图的声明①和声明②有何不同,为什么声明①会报错,而声明②就不会报错:

    现在就很容易解释了,声明①仅仅声明了list可以指向一个集合,但未给list分配指向一个内存空间,所以在未分配内存空间的时候就无法使用集合的属性和方法,声明②声明了list2可以指向一个集合,同时也为list2分配了一个新的内存空间,已分配存储空间的集合变量才能使用集合的方法和属性。

    三、使用.集合

    建立集合的方法和建立其它对象一样,如:

    Dim col As New Collection
    集合建立后,可以使用Add方法添加成员,用Remove方法删除成员,用Item方法从集合中返回特定成员。
    Private Sub CommandButton1_Click()
      Dim col As New Collection
      Dim i%
      Dim ct As Control
      For Each ct In Me.Controls
        If Left(ct.Name, 7) = "TextBox" Then col.Add ct
      Next ct
      For i = col.Count To 1 Step -1
        MsgBox "下面删除成员" & col.Item(i).Name
        col.Remove i
      Next i
    End Sub
    

    上面的代码先将窗体上所有的TextBox加入到集合中,然后再删除掉。Count属性返回集合的成员数量,Remove方法后面的参数是集合成员的索引号。成员的索引号通常是按照加入的顺序自然编号,从1开始,但可以在加入时使用Add方法的参数进行改变。Add方法的完整语法是:
    object.Add item[, key][, before][, after]
    item 必需的。任意类型的表达式,指定要添加到集合中的成员。
    key 可选的。唯一字符串表达式,指定可以使用的键字符串,代替位置索引来访问集合中的成员。
    before/after 可选的。表达式,指定集合中的相对位置。
    下面语句向集合增加一个对象TextBox1,并定义该成员的关键字为tx1。
    col.Add TextBox1, "tx1"
    然后,下面两句都可以向集合中增加一个TextBox2,并把它放在成员TextBox1的前面。
    col.Add TextBox2, , col.Count
    col.Add TextBox2, , "tx1"
    第一句中,因为只有一个成员,所以col.Count也是索引号

    借鉴:
    https://zhuanlan.zhihu.com/p/44510653

  • 相关阅读:
    mongodb 数据库创建用户名密码
    idea代码自动换行
    [ICPC2014 WF] Metal Processing Plant
    [NWRRC2015] Insider's Information
    [CERC2013] Escape
    [ICPC2015 WF] Tours
    AHOI 2022 题目选做
    LNOI 2022 题目选做
    [JOISC 2017 Day1] 开荒者
    [USACO 2020 US Open Platinum] Circus
  • 原文地址:https://www.cnblogs.com/kutsu/p/14111832.html
Copyright © 2020-2023  润新知