在 VBA 中,`Collection` 和 `Dictionary` 对象可以用来代替数组。它们的主要优点是可以动态地添加、删除和查找元素,而无需调整数组大小。下面是一个简单的例子:
```
Sub UseCollection()
Dim myCollection As New Collection
' 添加元素到 Collection 中
myCollection.Add "Apple"
myCollection.Add "Banana"
myCollection.Add "Orange"
' 遍历 Collection 中的元素
Dim item As Variant
For Each item In myCollection
Debug.Print item
Next item
' 将 Collection 转换为数组
Dim myArray() As String
ReDim myArray(0 To myCollection.Count - 1)
Dim i As Long
For i = 0 To myCollection.Count - 1
myArray(i) = myCollection(i + 1)
Next i
' 输出数组中的元素
For i = LBound(myArray) To UBound(myArray)
Debug.Print myArray(i)
Next i
End Sub
```
在上面的例子中,我们首先创建了一个 `Collection` 对象 `myCollection`,并向其中添加了三个元素。然后,我们使用 `For Each` 循环遍历 `myCollection` 中的元素,并使用 `Debug.Print` 语句输出每个元素的值。
最后,我们使用 `ReDim` 语句将数组 `myArray` 的大小调整为与 `myCollection` 中元素数量相同,并使用 `For` 循环将 `myCollection` 中的元素复制到 `myArray` 中。然后,我们再次使用 `For` 循环输出 `myArray` 中的元素。
类似地,你也可以使用 `Dictionary` 对象来代替数组,并使用 `Keys` 和 `Items` 属性来访问其中的元素。例如:
```
Sub UseDictionary()
Dim myDict As New Dictionary
' 添加元素到 Dictionary 中
myDict.Add "A", "Apple"
myDict.Add "B", "Banana"
myDict.Add "C", "Orange"
' 遍历 Dictionary 中的元素
Dim key As Variant
For Each key In myDict.Keys
Debug.Print key & ": " & myDict(key)
Next key
' 将 Dictionary 转换为数组
Dim myArray() As String
ReDim myArray(0 To myDict.Count - 1)
Dim i As Long
For i = 0 To myDict.Count - 1
myArray(i) = myDict.Items()(i)
Next i
' 输出数组中的元素
For i = LBound(myArray) To UBound(myArray)
Debug.Print myArray(i)
Next i
End Sub
```
在上面的例子中,我们首先创建了一个 `Dictionary` 对象 `myDict`,并向其中添加了三个元素。然后,我们使用 `For Each` 循环遍历 `myDict` 中的键值对,并使用 `Debug.Print` 语句输出每个键和对应的值。
最后,我们使用 `ReDim` 语句将数组 `myArray` 的大小调整为与 `myDict` 中元素数量相同,并使用 `For` 循环将 `myDict` 中的值复制到 `myArray` 中。然后,我们再次使用 `For` 循环输出 `myArray` 中的元素。
标签:vba,Dictionary,元素,myArray,myCollection,Collection,learn,myDict From: https://www.cnblogs.com/ASKMSSC/p/17415015.html