在 VBA 中声明和初始化字符串数组

Glen Alfaro 2023年1月30日
  1. 声明并初始化动态字符串数组
  2. 声明并初始化静态字符串数组
在 VBA 中声明和初始化字符串数组

在任何编程语言的任何代码执行中,存储信息的需求有时是不可避免的。好消息是 VBA 在存储数据时允许多种选择,其中之一就是数组。

在 VBA 中,数组根据其长度和数据类型的灵活性进行分类。

  1. 动态数组 - 长度和数据类型可变的数组
  2. 静态数组 - 长度和数据类型固定的数组。

此外,VBA 中的数组也可以根据它们的维度进行分类。

  1. 单维数组 - 只有一个单行数组的数组。
  2. 多维数组——具有多个单行数组的数组。

声明并初始化动态字符串数组

下面的代码块将演示如何创建和初始化字符串数组。

方法 1 - 声明为 Variant 数据类型

通过在变体数据类型中创建变量来声明动态数组。然后数组将由一个集合(Array())初始化。

Sub DynamicArrayDemo()

Dim stringArray As Variant

stringArray = Array("Lion", "Tiger", "Cheetah", "Monkey", "Elephant", "Zebra")

Debug.Print stringArray(3)

End Sub

DynamicArrayDemo 输出:

Monkey

方法 2 - 声明为字符串,然后使用 Split() 函数

声明一个名为 stringArray 的字符串数组,而不显式声明边界。

Sub DynamicArrayDemo()

Dim stringArray() As String
Dim str As String

str = "Lion,Tiger,Cheetah,Monkey,Elephant,Zebra"

stringArray = Split("Lion,Tiger,Cheetah,Monkey,Elephant,Zebra", ",")

Debug.Print stringArray(2)
End Sub

DynamicArrayDemo 输出:

Cheetah

声明并初始化静态字符串数组

下面的代码块演示了声明和初始化静态字符串数组的不同方法。

方法 1 - 声明 LowerBoundUpperBound:

通过显式声明其第一个和最后一个元素来声明一个静态字符串数组。

语法:

Dim stringArray([LowerBound] To [UpperBound]) As String

参数:

[LowerBound] 数组的第一个元素所引用的键整数。
[UpperBound] 引用数组最后一个元素的键整数。

下面的示例将声明一个名为 stringArray 的字符串数组,其中包含从元素 0 到 5 的六个元素。

Sub StaticArrayDemo()

Dim stringArray(0 To 5) As String

stringArray(0) = "Lion"
stringArray(1) = "Tiger"
stringArray(2) = "Cheetah"
stringArray(3) = "Monkey"
stringArray(4) = "Elephant"
stringArray(5) = "Zebra"

Debug.Print stringArray(4)

End Sub

StaticArrayDemo 输出:

Elephant

方法 2 - 显式更改下限

用一个通用的 Lower bound 值声明一个字符串数组。

Option Base 1

Sub StaticArrayDemo()
Dim stringArray(6) As String

stringArray(1) = "Lion"
stringArray(2) = "Tiger"
stringArray(3) = "Cheetah"
stringArray(4) = "Monkey"
stringArray(5) = "Elephant"
stringArray(6) = "Zebra"

Debug.Print stringArray(1)

End Sub

StaticArrayDemo 输出:

Lion

方法 3 - 使用多维数组声明和初始化

在 VBA 中,你可以声明最多 60 维的数组。

语法:

Dim stingArray( [LowerBound1] to [UpperBound1],[LowerBound2] to [UpperBound2], . . .  ) as String

参数:

[LowerBound1] 关键整数是第一个数组维度上引用的第一个数组元素。
[UpperBound1] 关键整数是第一个数组维度上引用的最后一个数组元素。
[LowerBound2] 关键整数是在第二个数组维度上引用的第一个数组元素。
[UpperBound2] 关键整数是第二个数组维度上引用的最后一个数组元素。

在下面的示例中,声明了一个多维数组,其中第一个维度是 1 到 5;然后另一个是 1 到 5。

Sub MultiStaticArrayDemo()

Dim stringArray(1 To 5, 1 To 5) As String
Dim i, j As Integer

For i = 1 To 5
    For j = 1 To 5
        stringArray(i, j) = "The value of (" & i & "," & j & ") is " & i * j
        Debug.Print stringArray(i, j)
    Next j
Next i

End Sub

MultiStaticArrayDemo 输出:

The value of (1,1) is 1
The value of (1,2) is 2
The value of (1,3) is 3
The value of (1,4) is 4
The value of (1,5) is 5
The value of (2,1) is 2
The value of (2,2) is 4
The value of (2,3) is 6
The value of (2,4) is 8
The value of (2,5) is 10
The value of (3,1) is 3
The value of (3,2) is 6
The value of (3,3) is 9
The value of (3,4) is 12
The value of (3,5) is 15
The value of (4,1) is 4
The value of (4,2) is 8
The value of (4,3) is 12
The value of (4,4) is 16
The value of (4,5) is 20
The value of (5,1) is 5
The value of (5,2) is 10
The value of (5,3) is 15
The value of (5,4) is 20
The value of (5,5) is 25

相关文章 - VBA Array