Excel VBA解读(156): 数据结构—ArrayList

2019-08-13 12:02:44 浏览数 (1)

在VBA中,ArrayList与内置的Collection对象类似,但提供了更丰富的功能,包括排序、数组转换、删除所有元素项目等。然而,ArrayList不是VBA内置的对象,需要我们添加对外部库的引用,才能够使用它。

创建ArrayList

可以使用前期绑定或后期绑定来添加对包含ArrayList的外部库的引用。

前期绑定

在VBE菜单栏中,单击“工具——引用”,在“引用”对话框中,找到并选中“mscorlib.dll”前的复选框,如下图1所示,然后单击“确定”。

图1

此时,可以使用下面的代码来声明ArrayList:

Dim alCol As New ArrayList

或者:

Dim alCol As ArrayList

Set alCol = New ArrayList

后期绑定

可以先不引用,而是使用CreateObject函数来创建ArrayList:

Dim alCol As Object

Set alCol = CreateObject("System.Collections.ArrayList")

添加元素

使用Add方法在ArrayList中添加元素:

Sub testAdd()

Dim alCol As Object

Set alCol =CreateObject("System.Collections.ArrayList")

alCol.Add "完美Excel"

alCol.Add "Excel"

Debug.Print alCol(0)

End Sub

运行结果如下图2所示。

图2

使用Insert方法在指定位置插入元素:

Sub testAdd()

Dim alCol As Object

Set alCol =CreateObject("System.Collections.ArrayList")

alCol.Add "完美Excel"

alCol.Add "Excel"

alCol.Insert 0, "Office"

Debug.Print alCol(0)

End Sub

运行结果如下图3所示。

图3

遍历ArrayList中的元素

使用For循环来遍历:

Sub testReadItem()

Dim alCol As Object

Dim i As Long

Set alCol =CreateObject("System.Collections.ArrayList")

alCol.Add "完美Excel"

alCol.Add "Excel"

alCol.Insert 0, "Office"

For i = 0 To alCol.Count - 1

Debug.Print alCol(i)

Next i

End Sub

运行结果如下图4所示。

图4

可以看出,ArrayList中的下标从0开始,最后一个元素的下标为其元素数量减1。注意,代码中使用Count属性返回ArrayList中元素的个数。

也可以使用For Each循环来遍历:

Sub testReadItem()

Dim alCol As Object

Dim item As Variant

Set alCol =CreateObject("System.Collections.ArrayList")

alCol.Add "完美Excel"

alCol.Add "Excel"

alCol.Insert 0, "Office"

For Each item In alCol

Debug.Print item

Next item

End Sub

运行结果如下图5所示。

图5

(未完待续)

0 人点赞