### VBA数组学习笔记 #### 一、数组的声明与初始化 在VBA中,数组是一种非常重要的数据结构,用于存储一系列同类型的值。数组的声明与其他变量类似,可以通过`Dim`、`Static`、`Private`或`Public`语句进行。与普通变量不同的是,在声明数组时通常需要指定其大小。 **1. 固定大小数组** 如果数组的大小在声明时就被确定下来,这样的数组称为固定大小数组。例如: ```vba Dim MyArray(10, 10) As Integer ``` 这里创建了一个二维整型数组`MyArray`,第一维大小为11(0到10),第二维同样为11。 **2. 动态数组** 如果数组的大小可以在程序运行过程中被修改,则称之为动态数组。使用`ReDim`语句可以改变动态数组的大小。例如: ```vba Dim MyIntegerArray() As Integer ReDim MyIntegerArray(10) ``` 这里首先声明了一个动态整型数组`MyIntegerArray`,然后通过`ReDim`将其大小设置为11个元素。 #### 二、数组内存占用与类型 不同的数据类型会占用不同的内存空间。例如,`Integer`类型的数据每个元素占用2字节,而`Double`类型的数据每个元素占用8字节。因此,当定义一个较大的数组时,需要考虑内存占用问题。 **示例:** ```vba ReDim MyIntegerArray(99, 99) As Integer '占用20,000字节 ReDim MyDoubleArray(99, 99) As Double '占用80,000字节 ReDim MyVariantArray(99, 99) '占用160,000字节 ``` 这里可以看到,相同大小的数组,根据数据类型的不同,所占用的内存空间也不同。 #### 三、数组的重新调整与保留原有值 有时候需要改变数组的大小,这时可以使用`ReDim`语句。需要注意的是,默认情况下,使用`ReDim`会丢失原有的数组值。为了保留原有的数组值,可以使用`ReDim Preserve`。 **示例:** ```vba Dim varArray(10) As Integer ReDim Preserve varArray(UBound(varArray) + 10) ``` 以上代码中,`varArray`最初有10个元素,通过`ReDim Preserve`操作后,它的大小变为20,同时保留了原来的10个元素的值。 #### 四、数组的索引与维度 数组的索引是从0或1开始的,这取决于`Option Base`的设置。默认情况下,索引从1开始。数组可以是一维、二维或多维的。 **示例:** - 一维数组:`Arr(1 to 12)` - 二维数组:`Arr2(1 to 5, 1 to 8)` - 三维数组:`Arr3(5 to 10, 6 to 12, 1 to 100)` 使用`UBound`函数可以获得数组某一维度的最大索引值。 **示例:** ```vba Dim Arr(1 To 12) As Integer Dim maxIndex As Integer maxIndex = UBound(Arr) ' maxIndex 的值为 12 ``` #### 五、数组的其他高级用法 除了基本的声明和使用外,VBA还支持多种高级数组操作,如通过Excel区域填充数组、数组公式等。 **1. 通过Excel区域填充数组** 可以直接将Excel中的某个区域的数据读取到数组中。 ```vba Dim arr As Variant arr = Range("A1:B10").Value ``` **2. 数组公式** 可以使用数组公式来执行批量计算。 ```vba Dim arr As Variant arr = [A1:B10] ' 将数组公式应用于另一个范围 Range("C1:D10").Formula = "=SUM(arr)" ``` **3. 数组的排序与过滤** 还可以使用内置函数对数组进行排序或过滤特定值。 ```vba Dim Arr() As String Arr = Array("a", "sas", "s", "Sas", "s", "f", "f", "f", "f", "sas", "s", "sas", "a", "a", "Sas", "s", "s") Dim temp() As String Dim count As Long count = 0 temp = Filter(Arr, "Sas") ' 这里temp数组包含了所有"Sas"的值 count = UBound(temp) - LBound(temp) + 1 ' 统计"Sas"出现的次数 ``` #### 六、总结 通过上述内容,我们可以了解到VBA中数组的基本用法以及一些高级功能。数组是处理大量数据时不可或缺的工具,掌握其使用方法对于提高编程效率非常重要。希望这些知识点能够帮助大家更好地理解和使用VBA数组。
- 粉丝: 14
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助