在 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