VBA陣列的使用方法(轉)

amyz發表於2007-08-13
VBA陣列的使用方法(轉)[@more@]

  1、宣告陣列。

  陣列的宣告方式和其它的變數是一樣的,它可以使用 Dim、Static、Private 或 Public 語句來宣告。標量變數(非陣列)與陣列變數的不同在於通常必須指定陣列的大小。若陣列的大小被指定的話,則它是個固定大小陣列。若程式執行時陣列的大小可以被改變,則它是個動態陣列。

  陣列是否從 0 或 1 索引是根據 Option Base 語句的設定。如果 Option Base 沒有指定為 1,則陣列索引從零開始。

  (1)宣告固定大小的陣列

  下面這行程式碼宣告瞭一個固定大小的陣列,它是個 11 行乘以 11 列的 Integer 陣列:

  Dim MyArray(10, 10) As Integer

  (2)宣告動態陣列

  若宣告為動態陣列,則可以在執行程式碼時去改變陣列大小。可以利用 Static、Dim、Private 或 Public 語句來宣告陣列,並使括號內為為空,如下示例所示。

  Dim sngArray() As Single

  2、獲得陣列的最大與最小下標。利用LBound 函式與UBound 函式函式可以分別來獲得陣列的最小與最大下標,其語法是:

  LBound(arrayname[, dimension])

  UBound(arrayname[, dimension])

  語法包含下面部分:

  部分 描述

  arrayname 必需的。陣列變數的名稱,遵循標準的變數命名約定。

  dimension 可選的;Variant (Long)。指定返回哪一維的下界。1 表示第一維,2 表示第二維,如此類推。如果省略 dimension,就認為是 1。

  3、ReDim 語句。ReDim 語句用來定義或重定義原來已經用帶空圓括號(沒有維數下標)的 Private、Public 或 Dim 語句宣告過的動態陣列的大小,其語法是:

  ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .

  ReDim 語句的語法包括以下幾個部分:

  部分 描述

  Preserve 可選的。關鍵字,當改變原有陣列最末維的大小時,使用此關鍵字可以保持陣列中原來的資料。

  varname 必需的。變數的名稱;遵循標準的變數命名約定。

  subscripts 必需的。陣列變數的維數;最多可以定義 60 維的多維陣列。subscripts 引數使用下面的語法:

   [lower To] upper [,[lower To] upper] . . .

  如果不顯式指定 lower,則陣列的下界由 Option Base 語句控制。如果沒有 Option Base 語句則下界為 0。

  type 可選的。變數的資料型別;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支援)、Date、String(對變長的字串)、String * length(對定長的字串)、Object、Variant、使用者定義型別或物件型別。所宣告的每個變數都要有一個單獨的 As type 子句。對於包含陣列的 Variant 而言,type 描述的是該陣列的每個元素的型別,不能將此 Variant 改為其它型別。

  可以使用 ReDim 語句反覆地改變陣列的元素以及維數的數目,但是不能在將一個陣列定義為某種資料型別之後,再使用 ReDim 將該陣列改為其它資料型別,除非是 Variant 所包含的陣列。如果該陣列確實是包含在某個 Variant 中,且沒有使用 Preserve 關鍵字,則可以使用 As type 子句來改變其元素的型別,但在使用了此關鍵字的情況下,是不允許改變任何資料型別的。

  如果使用了 Preserve 關鍵字,就只能重定義陣列最末維的大小,且根本不能改變維數的數目。例如,如果陣列就是一維的,則可以重定義該維的大小,因為它是最末維,也是僅有的一維。不過,如果陣列是二維或更多維時,則只有改變其最末維才能同時仍保留陣列中的內容。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-955118/,如需轉載,請註明出處,否則將追究法律責任。

相關文章