Excel VBA 数组:什么是数组、如何使用及 VBA 中的数组类型
什么是 VBA 数组?
数组被定义为能够存储多个值的内存位置。所有值必须是相同的数据类型。假设您想将一系列您喜欢的饮料存储在单个变量中,您可以使用 VBA 数组来完成。
通过使用数组,您可以引用具有相同名称的相关值。您可以使用索引或下标来区分它们。单个值被称为 Excel VBA 数组的元素。它们从索引 0 开始,一直到最高索引值,是连续的。
本教程假设您使用的是 Microsoft Excel 2013 版本。这些知识同样适用于其他版本的 Microsoft Excel。
数组有什么优点?
以下是 VBA 数组函数提供的一些好处:
- 将逻辑上相关的数据分组在一起 – 假设您想存储一个学生列表。您可以使用一个单一的数组变量,其中包含学生类别的不同位置,例如幼儿园、小学、中学、高中等。
- 数组使编写可维护的代码变得容易。对于相同逻辑上相关的数据,它允许您定义一个变量,而不是定义多个变量。
- 更好的性能 – 一旦定义了数组,检索、排序和修改数据速度会更快。
VBA 中的数组类型
VBA 支持两种类型的数组:
- 静态 – 这些类型的数组具有预先确定的固定元素数量。无法更改静态数组的数据类型大小。当您想处理已知实体(例如一周的天数、性别等)时,它们很有用。例如: Dim ArrayMonth(12) As String
- 动态 – 这些类型的数组没有预先确定的固定元素数量。当处理您无法预先确定数量的实体时,它们很有用。例如: Dim ArrayMonth() As Variant
声明数组的语法
静态数组
声明**静态**数组的语法如下:
Dim arrayName (n) as datatype
此处,
代码 | 行动 |
---|---|
Dim arrayName (n) datatype |
|
动态数组
声明**动态**数组的语法如下:
Dim arrayName() as datatype ReDim arrayName(4)
此处,
代码 | 行动 |
---|---|
Dim arrayName () datatype |
|
ReDim arrayName(4) |
|
数组维度
数组可以是一维、二维或多维的。
- 一维:在此维度中,数组仅使用一个索引。例如,每个年龄段的人数。
- 二维:在此维度中,数组使用两个索引。例如,每个班级有多少学生。它需要班级数量和每个班级中的学生数量。
- 多维:在此维度中,数组使用两个以上的索引。例如,白天的温度。(30、40、20)。
如何在 Excel VBA 中使用数组
我们将创建一个简单的应用程序。此应用程序将 Excel 工作表填充为数组变量中的数据。在此 VBA 数组示例中,我们将执行以下操作:
- 创建一个新的 Microsoft Excel 工作簿,并将其另存为 Excel 启用宏的工作簿 (*.xlsm)
- 向工作簿添加一个命令按钮
- 设置命令按钮的名称和标题属性
- 编程 VBA 以填充 Excel 工作表
让我们一步一步地进行这个练习,
步骤 1 – 创建新工作簿
- 打开 Microsoft Excel
- 将新工作簿另存为 VBA Arrays.xlsm
步骤 2 – 添加命令按钮
注意:本节假设您熟悉在 Excel 中创建界面的过程。如果您不熟悉,请阅读教程 VBA Excel 表单控件和 ActiveX 控件。它将向您展示如何创建界面。
- 向工作表添加命令按钮
- 将名称属性设置为 cmdLoadBeverages
- 将标题属性设置为 Load Beverages
您的 GUI 现在应如下所示:
步骤 3 – 保存文件
- 点击另存为按钮
- 选择 Excel 启用宏的工作簿 (*.xlsm),如下图所示:
步骤 4 – 编写代码
现在我们将为我们的应用程序编写代码。
- 右键单击 Load Beverages 按钮并选择“查看代码”。
- 将以下代码添加到 cmdLoadBeverages 的点击事件中:
Private Sub cmdLoadBeverages_Click() Dim Drinks(1 To 4) As String Drinks(1) = "Pepsi" Drinks(2) = "Coke" Drinks(3) = "Fanta" Drinks(4) = "Juice" Sheet1.Cells(1, 1).Value = "My Favorite Beverages" Sheet1.Cells(2, 1).Value = Drinks(1) Sheet1.Cells(3, 1).Value = Drinks(2) Sheet1.Cells(4, 1).Value = Drinks(3) Sheet1.Cells(5, 1).Value = Drinks(4) End Sub
此处,
代码 | 行动 |
---|---|
Dim Drinks(1 To 4) As String |
|
Drinks(1) = “Pepsi” |
|
Sheet1.Cells(1, 1).Value = “My Favorite Beverages.” |
|
Sheet1.Cells(2, 1).Value = Drinks(1) |
|
测试我们的应用程序
选择“开发工具”选项卡,并确保“设计模式”按钮已“关闭”。指示是它将具有白色背景而不是彩色(绿ish)背景。(参见下图)
点击 Load Beverages 按钮。
您将看到以下结果
下载包含上述代码的 Excel 文件
摘要
- 数组是能够存储多个值的变量。
- Excel VBA 支持静态和动态数组。
- 与声明大量用于逻辑上相关数据的变量相比,数组可以轻松编写可维护的代码。