關於VBA中數組的一些問題


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)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM