大家好,今日我們繼續(xù)講解VBA數(shù)組與字典解決方案,今日講解的是第34講:數(shù)組的傳遞。在應(yīng)用數(shù)組的時(shí)候,我們往往需要要把數(shù)組的值由一個(gè)數(shù)組傳遞給另外一個(gè)數(shù)組,就如同變量的傳遞一樣:
A=B '把B值賦給A
C=A '把A值賦給C
如上例,就完成了把值的傳遞的過程,分別把B的值傳遞給了A;把A的值傳遞了B,那么數(shù)組是否也可以呢?我們看下面的數(shù)組傳遞:
下面看我給出的代碼:
Sub MyNZsz_34() '第34講 如何把一個(gè)固定數(shù)組的值傳遞給另外一個(gè)數(shù)組
'直接賦值是不對(duì)的
Sheets('34').Select
Dim arr1(1) As Integer '定義一個(gè)一維固定數(shù)組arr1(1)
Dim arr2(1) As Integer '定義一個(gè)一維固定數(shù)組arr2(1)
arr1(0) = 1 '給arr1(1) 的數(shù)組元素0賦值為1
arr1(1) = 2 '給arr1(1) 的數(shù)組元素0賦值為2
arr2 = arr1 '講數(shù)組1傳遞給數(shù)組2
MsgBox (arr2(1)) '提示數(shù)組2的元素1的值
End Sub
上述代碼的過程要完成的是首先定義兩個(gè)一維數(shù)組arr1(1)和 arr2(1);然后先給其中的一個(gè)數(shù)組arr1(1)賦值,這個(gè)數(shù)組共用兩個(gè)元素分別賦值為1,2;然后我們用普通變量賦值的方法把數(shù)組arr1(1)賦值給arr2(1);最后提示數(shù)組2的元素1的值,那么是否會(huì)彈出對(duì)話框提示為1呢?
我們看看代碼的截圖和代碼的運(yùn)行:
1 代碼截圖
2 運(yùn)行截圖:
這個(gè)時(shí)候會(huì)提示我們不能這樣給數(shù)組賦值。由此我們可以看出:對(duì)于給定的2 個(gè)靜態(tài)數(shù)組不能相互賦值,否則將出現(xiàn)編譯錯(cuò)誤:不能給數(shù)組賦值。
那么要如何完成數(shù)組的值由一個(gè)數(shù)組傳遞給另外一個(gè)數(shù)組呢?常用的方法:①將靜態(tài)數(shù)組賦值給動(dòng)態(tài)數(shù)組②將靜態(tài)數(shù)組賦值給一個(gè)變體變量③再有就是循環(huán)的方法。對(duì)于循環(huán)的方案比較簡單,不再多說,這里著重講解前兩個(gè)方法。
對(duì)于動(dòng)態(tài)數(shù)組我們在之前的講解中已經(jīng)講了很多了,對(duì)于變量體大家要加強(qiáng)理解:數(shù)組可以用Variant 變體變量獲取一組單元格的值,公式等,當(dāng)不包括單元格地址。大家要理解Variant 變體變量的意義,當(dāng)使用數(shù)組的這種賦值方法的時(shí)候一定要定義這個(gè)變量為Variant 變體變量。
對(duì)于上面給出的代碼,我下面修正:
Sub MyNZsz_34_1() '第34講 如何把一個(gè)固定數(shù)組的值傳遞給另外一個(gè)數(shù)組
'直接賦值是不對(duì)的
Sheets('34').Select
Dim arr1(1) As Integer '定義一個(gè)一維固定數(shù)組arr1(1)
Dim arr3() As Integer
Dim arr4 As Variant
arr1(0) = 1 '給arr1(1) 的數(shù)組元素0賦值為1
arr1(1) = 2 '給arr1(1) 的數(shù)組元素0賦值為2
ReDim arr3(1)
arr3 = arr1 '講數(shù)組1傳遞給數(shù)組2
arr4 = arr1
MsgBox '動(dòng)態(tài)數(shù)組賦值后:' & arr3(1) '提示數(shù)組3的元素1的值
MsgBox 'Variant賦值后:' & arr4(1) '提示數(shù)組4的元素1的值
End Sub
下面看代碼的截圖;
代碼的運(yùn)行:
今日內(nèi)容回向:
1 數(shù)組的值如何傳遞?
2 如何理解變體變量?
聯(lián)系客服