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

检查元素的包含,其余的大家自己测试

 

posted @   南胜NanSheng  阅读(682)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示