在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
(未完待续)