在 VBA 中声明和初始化字符串数组
Glen Alfaro
2023年1月30日
在任何编程语言的任何代码执行中,存储信息的需求有时是不可避免的。好消息是 VBA 在存储数据时允许多种选择,其中之一就是数组。
在 VBA 中,数组根据其长度和数据类型的灵活性进行分类。
- 动态数组 - 长度和数据类型可变的数组
- 静态数组 - 长度和数据类型固定的数组。
此外,VBA 中的数组也可以根据它们的维度进行分类。
- 单维数组 - 只有一个单行数组的数组。
- 多维数组——具有多个单行数组的数组。
声明并初始化动态字符串数组
下面的代码块将演示如何创建和初始化字符串数组。
方法 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 - 声明 LowerBound
和 UpperBound
:
通过显式声明其第一个和最后一个元素来声明一个静态字符串数组。
语法:
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