1.數組定義中Dim Arr() As Variant與Dim Arr As Variant的區別
Dim Arr As Variant只是定義了一個Variant型變量,不代表這是數組
Dim Arr() As Variant是定義了一個動態數組,數組中的元素是Variant型
2.數組下標的區別
數組默認下標可能為0或者1,具體情況如下
(1)使用方括號賦值或者從工作表Range讀入數據並賦值給數組時,下標為1
方括號賦值舉例:
[{"一", "二", "三", "四"}] '一維數組
[{"五", "六";"七", "八"}] '二維數組
工作表Range賦值時,即使只有一列數據,也是一個二維數組。
(2)利用Array()函數為數組賦值時,下標取決於Option Base語句
如有Option Base 1,數組下標為1;如有Option Base 0或省略該句,數組下標為0。
其中Option Base語句是模塊級語句,必須寫在模塊的最前部分,且不能后續更改。
(3)如果未指定Option Base 1,且想用Array()函數批量賦值,並使下標為1,是做不到的,只能先定義下標為1的數組(動態數組Redim亦可),然后對元素依次賦值。
3.靜態數組不允許Redim,動態數組允許Redim,Redim只允許改變最高維
例如:
Dim Arr(1 To 2) As Variant,不允許Redim Arr(1 To 3)
Dim Arr() As Variant,允許Redim Arr(1 To 3)
4.二維數組與數組嵌套
(1)方括號賦值可以直接對二維數組賦值,舉例見2(1)部分
(2)Array()函數不能形成二維數組,只能是數組的嵌套
(3)二維數組必須是一個“矩形”,而數組嵌套則無此限制
舉例:
Arr1=[{"一", "二"; "三", "四"}] '允許
Arr2=[{"一", "二"; "三", "四", "五"}] '不允許
Arr3=Array(Array("一", "二"), Array("三", "四", "五")) '形成的是一維數組的嵌套,Arr3()有兩個元素,都是數組,其中第一個數組有兩個元素,第二個數組有三個數組
如果要引用Arr1中值為"三"的元素,代碼為Arr(2,1);要引用Arr2中值為"三"的元素,代碼為Arr(2)(1)。