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 為數組變數恢復分配的記憶體。

上一篇: VBA日期時間函數 下一篇: VBA用戶自定義函數