VBA 如何使用动态数组
时间: 2023-10-22 22:19:23 浏览: 66
在 VBA 中,动态数组是一种可以根据需要自动调整大小的数组。使用动态数组可以在编写代码时更加灵活和方便。
要声明动态数组,可以使用 ReDim 语句:
```
Dim myArray() As Integer
```
请注意,这里没有指定数组的大小。在需要时,可以使用 ReDim 语句来调整数组的大小:
```
ReDim myArray(10) ' 数组大小为 11
```
可以使用 UBound 函数来获取数组的上限:
```
Dim upperBound As Integer
upperBound = UBound(myArray)
```
要向动态数组添加元素,可以使用以下代码:
```
ReDim Preserve myArray(11) ' 数组大小增加到 12
myArray(11) = 42 ' 添加新元素
```
请注意,这里使用了 Preserve 关键字,以便保留数组中的现有元素。
希望这个回答能够帮到你!
相关问题
VBA二维数组动态添加
在 VBA 中,我们可以使用 ReDim 语句来动态调整数组的大小,并且可以使用 Preserve 关键字来保留数组中的数据。下面是一个示例代码,演示了如何动态添加二维数组:
```
Sub AddTo2DArray()
Dim myArray() As Variant
Dim i As Long, j As Long
'初始化数组
ReDim myArray(1 To 2, 1 To 2)
myArray(1, 1) = "A"
myArray(1, 2) = "B"
myArray(2, 1) = "C"
myArray(2, 2) = "D"
'打印原始数组
For i = 1 To UBound(myArray, 1)
For j = 1 To UBound(myArray, 2)
Debug.Print myArray(i, j)
Next j
Next i
'动态添加一行数据
ReDim Preserve myArray(1 To UBound(myArray, 1) + 1, 1 To UBound(myArray, 2))
myArray(3, 1) = "E"
myArray(3, 2) = "F"
'打印添加后的数组
For i = 1 To UBound(myArray, 1)
For j = 1 To UBound(myArray, 2)
Debug.Print myArray(i, j)
Next j
Next i
End Sub
```
在这个示例代码中,我们首先初始化了一个 2x2 的二维数组,并且给数组赋了初始值。然后,我们使用 ReDim 语句和 Preserve 关键字动态添加了一行数据,并且打印了添加后的数组。
需要注意的是,在使用 Preserve 关键字调整数组大小时,只能调整最后一个维度的大小,不能调整其他维度的大小。如果需要调整其他维度的大小,需要先将数据复制到一个新的数组中,然后再调整数组大小。
vba二维动态数组赋值
定义二维动态数组时,可以使用 `ReDim` 语句动态改变数组的大小,然后使用双重循环遍历数组的每个元素,给每个元素赋值。以下是一个示例代码:
```
Dim arr() As Integer
Dim i As Long, j As Long
ReDim arr(1 To 3, 1 To 4)
For i = 1 To 3
For j = 1 To 4
arr(i, j) = i * j
Next j
Next i
```
在上面的示例中,我们声明了一个名为 `arr` 的二维整数数组,并定义为动态数组。我们使用 `ReDim` 语句为其分配了 3 行 4 列的空间。然后使用双重循环遍历数组的每个元素,使用 `i` 和 `j` 分别表示当前元素所在的行和列,然后通过 `i * j` 的计算结果给每个元素赋值。
需要注意的是,当使用 `ReDim` 改变数组大小时,原来的数组元素会被清空,所以需要重新赋值。如果需要保留原来的数组元素,可以使用 `Preserve` 关键字,例如:
```
ReDim Preserve arr(1 To 4, 1 To 4)
```
在上面的示例中,我们使用 `Preserve` 关键字来保留原来的数组元素。这样,只会增加数组的行数,列数不变,原来的元素会被保留下来。