在 VBA 中声明和初始化字符串数组
Glen Alfaro
2023年1月30日
VBA
VBA Array

在任何编程语言的任何代码执行中,存储信息的需求有时是不可避免的。好消息是 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
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe