「VBA」陣列(array)使用小整理

by 17:25:00 0 comments
Just a note, enjoy it!



1. 定義陣列語法 statement of defining array
以下範例定義的陣列中,總共有11個元素,從ArrayName(0)到ArrayName(10)。
Dim ArrayName(10) As AnyType
* ArrayName為變數名稱,可自行定義。
* AnyType可以是任何資料型態或物件。


如果想要從1開始,有以下兩種方式。
A.
Dim ArrayName(1 To 10) As AnyType

B. 在整個程式前面加上 Option Base 1

在A方法中,陣列元素可從任何值開始(只要不大於最後一個元素的編號即可);但B方法中Option Base後的數字只能是1或0,若沒特別註明則為0。

------------------------------------------------------------------------------

2. 第一次放值時 when you first put the value in array
A.
For i = 0 To 10
 ArrayName(i)=i
Next i

B.
ArrayName(0)=0
ArrayName(1)=1
ArrayName(2)=2
ArrayName(3)=3

C.
Dim ArrayName as Variant
ArrayName=Array(0,1,2,3)
* 這種方法只能定義為Variant型態,故陣列元素起始值受Option Base影響。

------------------------------------------------------------------------------

3. 初始化陣列
依資料型態不同,而有不同的初始值。Integer→0;String→"";Object→Nothing。
Erase ArrayName

------------------------------------------------------------------------------

4. 如何知道陣列大小 how to know the array size
  LBound(ArrayName)→此函數回傳指定陣列的起始元素編號
  UBound(ArrayName)→此函數回傳指定陣列的結束元素編號
  陣列大小 array size→UBound(ArrayName)-LBound(ArrayName)+1

------------------------------------------------------------------------------

5. 動態陣列
一開始使用Dim定義變數時,陣列大小與元素必須是常數,不能放變數。若想使用動態陣列,則需使用ReDim
ReDim ArrayName(r)
* 必須有Dim,才能有ReDim
* r可以是常數,或者變數。


在程式中,有可能陣列大小是隨著執行而改變。在改變陣列大小時,有時候原本放在陣列中的資料還會繼續使用,這時就不能單純只用ReDim
ReDim Preserve ArrayName(r)
* 若沒有加上Preserve關鍵字,則前面r個元素中的資料不會被保留


有任何問題歡迎留言或Mail。
If you have any problem, just left a message or send mail to me.


0 comments:

Post a Comment