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 可以提供灵活性和效率。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/40959.html