VBA实现数组Array与集合Collection互换
2015-12-19 17:40
513 查看
数组和集合在VBA中是常用的数据类型,这里水文具工集在VBA中实现数组Array与集合Collection的相互转换,编写了两个通用的过程ArrayToCollection与CollectionToArray,方便程序中调用,具体源代码如下:
数组转换到集合ArrayToCollection
集合转换到数组CollectionToArray
数组转换到集合ArrayToCollection
'================================ ' VBA数组转换到集合ArrayToCollection ' ' http://www.cnhup.com '================================ Public Function ArrayToCollection( _ Arr As Variant, ByRef Coll As Collection) _ As Boolean Dim Ndx As Long Dim KeyVal As String If IsArray(Arr) = False Then ArrayToCollection = False Exit Function End If On Error GoTo ErrH: Select Case NumberOfArrayDimensions(Arr:=Arr) Case 0 ArrayToCollection = False Exit Function Case 1 For Ndx = LBound(Arr) To UBound(Arr) Coll.Add Item:=Arr(Ndx) Next Ndx Case 2 For Ndx = LBound(Arr, 1) To UBound(Arr, 1) KeyVal = Arr(Ndx, 1) If Trim(KeyVal) = vbNullString Then Coll.Add Item:=Arr(Ndx, 1) Else Coll.Add Item:=Arr(Ndx, 0), Key:=KeyVal End If Next Ndx Case Else ArrayToCollection = False Exit Function End Select ArrayToCollection = True Exit Function ErrH: ArrayToCollection = False End Function
集合转换到数组CollectionToArray
'================================ ' VBA集合转换到数组CollectionToArray ' ' http://www.cnhup.com '================================ Public Function CollectionToArray( _ Coll As Collection, Arr As Variant) _ As Boolean Dim V As Variant Dim Ndx As Long If Coll Is Nothing Then CollectionToArray = False Exit Function End If If IsArray(Arr) = False Then CollectionToArray = False Exit Function End If If IsArrayDynamic(Arr:=Arr) = False Then CollectionToArray = False Exit Function End If If Coll.Count < 1 Then CollectionToArray = False Exit Function End If ReDim Arr(1 To Coll.Count) For Ndx = 1 To Coll.Count If IsObject(Coll(Ndx)) = True Then Set Arr(Ndx) = Coll(Ndx) Else Arr(Ndx) = Coll(Ndx) End If Next Ndx CollectionToArray = True End Function
相关文章推荐
- VBA如何判断一个对象是否为空
- VBA中dim,static和public,private的区别
- VBA中Dictionary对象使用小结
- excel VBA 字典与集合(Dictionary与Collection)
- VBA中集合collection方法的基础知识
- VB中ByVal与ByRef有什么区别
- vba excel 的宏
- 利用VBA把PowerDesigner的comment复制到name
- 利用VBA把PowerDesigner的name复制到comment
- 行情列表重构 TabBar&NavBar&tableView
- 解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
- 利用VBA从Excel导入数据模型到PowerDesigner
- 利用VBA把PowerDesigner导出到Excel
- VBoxManage命令详解
- 函数模块:CTVB_COMPARE_TABLES--两个表中删除/变更/粘贴分解
- VB6.0 读取Excel文件并返还数据集RecordSet
- vb学习基础之val函数与val(&HFFFF) 的理解
- Phone_DVB+OTT项目首页
- vb制作单片机 上位机 (1) 控制单个电灯开关
- [VBS] Working with DOS Command Line