位置:首頁 > 高級語言 > VBA教學 > VBA數組

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")
  1. 雖然,數組大小顯示為5,它可以容納6個值作為數組索引從零開始。

  2. 數組索引不能為負數。

  3. 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維度。最常用的是二維數組。

例子 :

在下麵的例子中,一個多維陣列具有3行和4列聲明。

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中的各種內置函數,幫助開發者有效地處理數組。所有正在使用中一起選擇數組方法在下麵列出。請點擊方法名詳細了解。

函數 描述
LBound 此函數返回一個整數,對應於給定的數組中最小的下標。
UBound 此函數返回一個整數,對應於給定數組的最大下標。
Split 此函數返回包含值的指定數量的數組。分割後基於分隔符。
Join 此函數返回一個包含子字符串數組中的指定數量的字符串。這是Split 方法的完全相反的作用。
Filter 此函數返回零的數組包含字符串數組基於一個特定的過濾標準的子集。
IsArray 此函數返回一個布爾值,指示輸入變量是否是一個數組。
Erase 此函數恢複所分配的內存為數組變量。