VBA 使用 mscorlib总的arraylist拓展自身的array的功能
利用对com开放的类,拓展vba的功能
ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本。在VBA中,ArrayList提供了丰富的功能,包括排序、数组转换、动态的增加和减少元素、删除所有元素项目等。
相比字典,ArrayList的优势有:可以写入重复的item,并可查找;可以在指定索引位置插入item;可以选择对item进行排序或不排序(包括去重排序);可以通过item或索引删除(排序前排序后都可以);
劣势则是对大量数据的处理效率不够高。
内容:
ArrayList的使用非常简单,大概可分为以下几个部分:
1.创建ArrayList
2.添加或插入item
3.查找或删除item(可清空所有数据)
4.排序
5.复制
6.输出(可转数组)
7.释放(删除)arrList
通常必要的部分是1,2,6,其他部分可自由选择与组合使用。
Public Sub SortArray(ByRef arr As Variant)
Dim arrlist As Object, i As Long, rtn As Variant
Set arrlist = CreateObject("System.Collections.ArrayList")
For i = LBound(arr) To UBound(arr)
arrlist.Add arr(i)
Next
Erase arr
arrlist.Sort
rtn = arrlist.toarray()
Set arrlist = Nothing
arr = rtn
End Sub
Public Sub ArrayRemoveEleAt(ByRef arr As Variant, index As Long)
Dim arrlist As Object, i As Long, rtn As Variant
Set arrlist = CreateObject("System.Collections.ArrayList")
For i = LBound(arr) To UBound(arr)
arrlist.Add arr(i)
Next
Erase arr
arrlist.removeat index
rtn = arrlist.toarray()
Set arrlist = Nothing
arr = rtn
End Sub
Public Function ArrayContainsEle(ByRef arr As Variant, ele As Variant) As Boolean
Dim arrlist As Object, i As Long, rtn As Boolean
Set arrlist = CreateObject("System.Collections.ArrayList")
For i = LBound(arr) To UBound(arr)
arrlist.Add arr(i)
Next
rtn = arrlist.contains(ele)
Set arrlist = Nothing
ArrayContainsEle = rtn
End Function
Public Sub ReverseArray(ByRef arr As Variant)
Dim arrlist As Object, i As Long, rtn As Variant
Set arrlist = CreateObject("System.Collections.ArrayList")
For i = LBound(arr) To UBound(arr)
arrlist.Add arr(i)
Next
Erase arr
arrlist.Reverse
rtn = arrlist.toarray()
Set arrlist = Nothing
arr = rtn
End Sub
检查元素的包含,其余的大家自己测试



浙公网安备 33010602011771号