VBA陣列


我們都知道,一個變數是一個儲存值的容器。 有時,開發人員希望一次可以在一個變數中儲存多個值。 當一系列值儲存在單個變數中時,則稱為陣列變數。

陣列宣告

陣列宣告的方式與宣告變數相同,只是陣列變數的宣告使用括號。 在下面的例子中,括號裡提到了陣列的大小。參考以下範例 -

'Method 1 : Using Dim
Dim arr1()    'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")

在上面程式碼中,

  • 雖然陣列大小被指定為5,但是當陣列索引從零開始時,它可以保持6個值。
  • 陣列索引不能是負數。
  • VBScript陣列可以在陣列中儲存任何型別的變數。因此,一個陣列可以在一個陣列變數中儲存一個整數,字串或字元。

賦值給陣列

通過為每個要分配的值指定一個陣列索引值,將這些值分配給陣列。它可以是一個字串。

例子

新增一個模組並新增以下程式碼 -

Private Sub Constant_demo_Click()
   Dim arr(5)
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript"    'String
   arr(2) = 100            'Number
   arr(3) = 2.45            'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time

   msgbox("Value stored in Array index 0 : " & arr(0))
   msgbox("Value stored in Array index 1 : " & arr(1))
   msgbox("Value stored in Array index 2 : " & arr(2))
   msgbox("Value stored in Array index 3 : " & arr(3))
   msgbox("Value stored in Array index 4 : " & arr(4))
   msgbox("Value stored in Array index 5 : " & arr(5))
End Sub

當執行上面的函式時,它會產生下面的輸出。

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

多維陣列

陣列不僅限於一個維度,但它們最多可以有60個維度。 二維陣列是最常用的陣列。

例子

在下面的例子中,一個多維陣列被宣告為34列。

Private Sub Constant_demo_Click()
   Dim arr(2,3) as Variant    ' Which has 3 rows and 4 columns
   arr(0,0) = "Apple" 
   arr(0,1) = "Orange"
   arr(0,2) = "Grapes"           
   arr(0,3) = "pineapple" 
   arr(1,0) = "cucumber"           
   arr(1,1) = "beans"           
   arr(1,2) = "carrot"           
   arr(1,3) = "tomato"           
   arr(2,0) = "potato"             
   arr(2,1) = "sandwitch"            
   arr(2,2) = "coffee"             
   arr(2,3) = "nuts"            

   msgbox("Value in Array index 0,1 : " &  arr(0,1))
   msgbox("Value in Array index 2,2 : " &  arr(2,2))
End Sub

當執行上面的函式時,它會產生下面的輸出。

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

ReDim語句

ReDim語句用於宣告動態陣列變數並分配或重新分配儲存空間。

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]

引數說明

  • Preserve - 一個可選引數,用於在更改最後一個維度的大小時保留現有陣列中的資料。
  • Varname - 必需的引數,表示變數的名稱,應遵循標準變數命名約定。
  • Subscripts - 必需的引數,表示陣列的大小。

例子

在下面的例子中,陣列已經被重新定義,當陣列的現有大小發生改變時,這些值被儲存下來。

注意 - 調整陣列的大小時,刪除的元素中的資料將丟失。

Private Sub Constant_demo_Click()
   Dim a() as variant
   i = 0
   redim a(5)
   a(0) = "XYZ"
   a(1) = 41.25
   a(2) = 22

   REDIM PRESERVE a(7)
   For i = 3 to 7
   a(i) = i
   Next

   'to Fetch the output
   For i = 0 to ubound(a)
      Msgbox a(i)
   Next
End Sub

當執行上面的函式時,它會產生下面的輸出。

XYZ
41.25
22
3
4
5
6
7

陣列方法

VBScript中有各種內建函式,可以幫助開發人員有效地處理陣列。 下面列出了與陣列一起使用的所有方法。請點選方法名稱來詳細了解它們如何應用。

編號 方法 描述
1 LBound 它返回一個整數,對應於給定陣列的最小下標。
2 UBound 它返回一個整數,對應於給定陣列的最大下標。
3 Split 它返回一個包含指定數量值的陣列。根據分隔符分割。
4 Join 它返回一個包含陣列中指定數量的子串的字串。這是Split方法的一個完全相反的功能。
5 Filter 它返回一個基於零的陣列,該陣列包含基於特定過濾條件的字串陣列的子集。
6 IsArray 它返回一個布林值,表示輸入變數是否是一個陣列。
7 Erase 為陣列變數恢復分配的記憶體。