VBA - 创建空数组

作者:编程家 分类: vba 时间:2025-08-16

使用VBA创建空数组是在编写Excel宏时经常遇到的需求之一。空数组是一种没有任何元素的数组,可以在程序中根据需要动态地添加元素。本文将介绍如何使用VBA创建空数组,并提供一个简单的案例代码来说明其用法。

什么是空数组?

在VBA中,空数组是指没有任何元素的数组。与其他编程语言不同,VBA允许创建空数组,并在需要时向其添加元素。创建空数组可以为程序提供更大的灵活性,并节省内存空间。

如何创建空数组?

要创建一个空数组,可以使用VBA的Array函数并不传递任何参数。下面是一个创建空数组的示例代码:

vba

Dim myArray() As Variant

myArray = Array()

在上面的代码中,我们声明了一个变量myArray并将其设置为Variant类型的空数组。使用Array函数并不传递任何参数,就可以创建一个没有任何元素的空数组。

如何向空数组添加元素?

一旦创建了空数组,我们可以使用ReDim语句重新定义数组的大小,并在需要的位置添加元素。下面是一个向空数组添加元素的示例代码:

vba

ReDim Preserve myArray(0 To 2)

myArray(0) = "Apple"

myArray(1) = "Banana"

myArray(2) = "Orange"

在上面的代码中,我们使用ReDim语句将数组大小重新定义为0到2,并使用索引将元素赋值给数组。通过使用Preserve关键字,我们可以保留之前的数组元素,并在数组大小改变时保持它们的值。

案例代码:使用空数组进行数据筛选

假设我们有一个包含学生姓名和分数的Excel表格,我们想要使用VBA筛选出分数大于90的学生。我们可以使用空数组来存储符合条件的学生姓名。下面是一个示例代码:

vba

Sub FilterStudents()

Dim dataRange As Range

Dim studentNames() As Variant

Dim scores() As Variant

Dim i As Integer

Dim j As Integer

' 定义数据范围

Set dataRange = Range("A2:B10")

' 获取数据范围的行数

Dim rowCount As Integer

rowCount = dataRange.Rows.Count

' 遍历每一行数据

For i = 1 To rowCount

' 检查分数是否大于90

If dataRange.Cells(i, 2).Value > 90 Then

' 将符合条件的学生姓名添加到数组

ReDim Preserve studentNames(0 To j)

studentNames(j) = dataRange.Cells(i, 1).Value

j = j + 1

End If

Next i

' 输出符合条件的学生姓名

For i = 0 To UBound(studentNames)

MsgBox studentNames(i)

Next i

End Sub

上面的代码首先定义了一个数据范围dataRange,然后声明了两个空数组studentNames和scores来存储学生姓名和分数。通过遍历数据范围并检查分数是否大于90,我们将符合条件的学生姓名添加到studentNames数组中。最后,我们使用MsgBox函数输出符合条件的学生姓名。

通过使用空数组,我们可以方便地筛选出符合特定条件的数据,并在程序中动态地添加所需的元素。这提供了更大的灵活性和效率,使我们的VBA程序更加强大。