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
检查元素的包含,其余的大家自己测试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具