ReDim 是VBA中用于重新维度化数组的关键字。它的主要用途是更改数组的维数、大小或类型。
语法
ReDim [Preserve] 数组名称([维数]) [As 数据类型] [To 上界]
Preserve:可选关键字,用于保留数组的现有数据。如果未使用 Preserve,则重新维度化数组后将丢失现有数据。
数组名称:要重新维度化的数组的名称。
维数:可选参数,指定数组的维数。
As 数据类型:可选参数,指定数组元素的数据类型。如果省略,数据类型将保持不变。
To 上界:可选参数,指定数组的上界。
用法
1. 创建动态数组
通过 ReDim 可以在运行时创建数组,无需事先知道数组的大小。
Sub aa()
Dim MyArray() As Integer ' 声明一个未初始化的数组
ReDim MyArray(5) ' 创建一个包含 6 个整数的数组,数组的索引从0开始
End Sub
'或者
Sub aa()
Dim MyArray() As Integer ' 声明一个未初始化的数组
ReDim MyArray(1 To 5) ' 创建一个包含 5 个整数的数组,数组的索引从1开始
End Sub
2. 重新维度化数组
ReDim 允许您更改现有数组的大小或维数。
Sub aa()
Dim MyArray() As Integer ' 声明一个未初始化的数组
ReDim MyArray(5)
ReDim MyArray(10) ' 将数组的大小更改为 11 个整数
End Sub
3. 保留数组数据
使用 Preserve 关键字可以保留现有数组数据,即使重新维度化数组也能保留部分或全部数据。
Sub aa()
Dim MyArray() As Integer ' 声明一个未初始化的数组
ReDim MyArray(5)
For i = 0 To 5
MyArray(i) = 1
Next
ReDim Preserve MyArray(15) ' 保留现有数据,数组大小变为 16 个整数
End Sub
4. 多维数组
ReDim 可用于创建和重新维度化多维数组。
Sub aa()
Dim MyMatrix() As Double ' 未初始化的二维数组
ReDim MyMatrix(1 To 3, 1 To 4) ' 创建一个 3x4 的二维数组
End Sub
应用场景
ReDim 在 VBA 中具有多种应用场景,包括但不限于:
1. 动态数据集合:ReDim 用于创建可变大小的数据集合,以应对不同数据量的情况。
2. 读取和处理文件:在读取外部文件时,ReDim 可用于根据文件大小调整数组大小,以保存文件数据。
3. 多维数组:用于创建多维数组,以便在各种数据分析任务中处理复杂数据结构。
4. 优化内存使用:ReDim 可用于在程序运行时动态分配内存,以减小内存占用。
5. 递增性数据处理:在递增性数据处理中,ReDim 可用于扩展数据集。
示例
Sub aa()
Dim MyDynamicArray() As Integer
Dim i As Integer
' 初始化数组
ReDim MyDynamicArray(1 To 5)
' 向数组添加元素
For i = 1 To 5
MyDynamicArray(i) = i
Next i
' 打印数组内容
For i = LBound(MyDynamicArray) To UBound(MyDynamicArray)
Debug.Print MyDynamicArray(i)
Next i
' 重新维度化数组,添加更多元素
ReDim Preserve MyDynamicArray(1 To 10)
' 添加更多元素
For i = 6 To 10
MyDynamicArray(i) = i
Next i
' 打印重新维度化后的数组内容
For i = LBound(MyDynamicArray) To UBound(MyDynamicArray)
Debug.Print MyDynamicArray(i)
Next i
End Sub
此示例演示了如何使用 ReDim 创建和重新维度化动态数组,并保留现有数据。首先,我们初始化了一个包含5个整数的数组,然后向数组添加元素。接着,我们使用 ReDim Preserve 扩展数组,添加更多元素。
总之,ReDim 是一个强大的VBA关键字,用于处理动态数据集合、数组和多维数组的大小和维数。在处理不确定数据量或需要在运行时调整数据结构大小的情况下,ReDim 可以提供灵活性和效率。