主要內容: 本文章主要介紹vba中,陣列的使用,特別介紹動態陣列的使用,並有簡單事例,幫助理解。
陣列是我們經常用到的儲存資料的一種媒介,他到底是什麼呢?
陣列是具有相同資料型別並且共享乙個名字的一組變數的集合。通俗的說,陣列是變數。
陣列的宣告
可以用dim語句或者public語句生命陣列。
如:dim/public 陣列名 (a to b) as 資料型別
a 和b 是陣列中元素的個數,陣列元素素最小值為a,最大值為b,元素個數為(b-a+1),當然,你也可以直接輸入個數,此時預設最小索引號為0。
如:
dim myarr(5) as integer
上面定義的只是一維陣列,你還可以定義二維、三維、四維…….
如:
dim myarr(1 to 5,1 to 10) as integer
這就是乙個二維陣列,元素個數為5*10=50個
在程式設計的過程中,定義陣列的時候我們可能不能確定陣列的元素個數,對陣列進行宣告後,可以在執行時用redim語句重新指定陣列的大小。
當就涉及動態陣列。
1、動態陣列的定義
動態陣列的定義,一開始不需要給陣列標明上界和下界。直接定義即可,如下面的**:
dim mystr() as string
這樣,就定義了乙個動態陣列及其名稱:mystr(),現在,該陣列的上界下界都是個未知數,也就是說,陣列中到底有沒有內容或到底有什麼內容,是個未知數。
因此,要使用動態陣列,就必須對其定義好下界和上界。
2、給動態陣列確定下界和上界
給動態陣列重新確定下界和上界,那麼,分兩種情況。
①保留原值
採用此**:redim preserve mystr(n) 'n為陣列長度
②不保留原值
採用此**:redim mystr(n) 'n為陣列長度
③以上兩種情況的例項
下面我們看如上兩種情況的小例項:
比如:
dim mystr() as string
redim mystr(2)
mystr(0)=」1」
mystr(1)=」2」
現在,這個動態陣列有兩個值了,分別是0和1,現在,我們再重新確定該陣列的長度。
當然,重新確定自然又有兩種情況了。
a、保留原有資料
redim preserve mystr(3) '原來長度是2,現在重新確定為3,並且,保留原有的資料。
mystr(2)=」3」 '現在,該陣列就有三個值了,分別是:
mystr(0)為1、mystr(1)為2、mystr(2)為3
b、不保留原有資料
如果我們使用如下**
redim mystr(3)
mystr(2)=」3」
現在,該陣列的長度儘管為3,但是,裡面卻只有乙個資料了,那就是,mystr(2)的值是3,而mystr(0)和mystr(1)裡面,什麼都沒有。
關鍵字:preserve的作用就的保留原有值,請根據需要加以取捨。
3、動態陣列與excel的結合使用例項
dim n as integer
n = 0
dim mystr() as string
for i = 1 to sheet1.usedrange.rows.count
for j = 1 to sheet1.usedrange.columns.count
n = n + 1
redim preserve mystr(n) '給動態陣列重定義乙個實際的大小
mystr(n - 1) = sheet1.cells(i, j).value '存到動態陣列裡去
next j
next i
for each myarray in mystr
msgbox "陣列的值是" & myarray
next
以上**的功能是:將sheet1中已經有資料的單元格區域,通過vba**迴圈找到每行每列對應的單元格的值,通過對話方塊顯示出來。
注意哦,陣列的使用,其下界都是從0開始的。
4、計算陣列長度
例子:
dim mystr() as string
陣列長度為: ubound(mystr)-lbound(
mystr
)(上下界相減)
5、二維動態陣列
例子:
dim arrsamestr() as long
redim preserve arrsamestr(1 to str5, 1 to 4)
和一維陣列一樣,只是定義兩個值 。
VBA動態陣列簡單應用
vba動態陣列簡單應用 動態陣列在vba中,用於篩選大資料是比較好用的.當一行資料滿足篩選要求時,將該行資料寫入到新的陣列中,逐維增加,最後再將這個新的陣列輸出到 動態陣列和一靜態陣列定義不同 靜態陣列定義 dim arr 動態陣列定義 dim arr 重新定義動態陣列 redim arr 1 to...
vba 陣列 陣列引數
關於賦值 我看了很多本書都沒有看到這樣子的,包括官方文件,所以我就寫了下來。sub a dim a dim c a array 1,2,3,4 這裡a後面的 可以給也可以不給 c a end sub寫法一 sub a paramarray a as variant paramarray 可以用byr...
VBA陣列賦值
先說一下,剛才乙個錯誤的操作,連儲存的草稿都沒了,這也太懸了。以後還是在本地寫好了再放上來。陣列是這樣賦值的 dim a2 10 as integer 10是可以使用的最大上標,這和c語言不太一樣 dim a3 2 to 10 as integer 也可以定義下標 dim a1 as integer...