一、概念
1.數組(Array)
數組就是一組相同類型的數據的有序集合,通過索引來訪問數組中的各個元素。
2.集合(Collection)
Collection集合是我們在使用類時最常用到的對象。
一個Collection對象代表一組相關的項目。
集合是一組數據信息,存放於一個一維數組中,以便用戶隨時訪問、增添、刪除同類信息。
當你事先不知道要存放數據的個數,或者你需要一種比數組下標存取機制更靈活的方法時,你就需要用到集合類。
3.字典(Dictionary)
字典不是VBA內置的類型,VBA中的字典是微軟Windows腳本語言中的一個很有用的對象,字典是由具有唯一性的關鍵字(Key)和它的項(Item)組成的集合,Key相當於字典中的每個字,具有不重復性,Item相當於對字典中每個字對應的解釋。
小結:
通過概念來看,數組、字典和集合相同點都是存儲一組數據,不同的是數組可以有一維數組、二維數組或者多維數組,集合和字典看起來就像一個一維數組,只不過集合里每個元素存儲一個對象,字典里每個元素是存儲一對值(Key和Item)。
二、聲明語法
1.數組
a.靜態數組。所謂靜態數組,即它的長度是固定不可變的,在括號中注明數組的起始索引和結束索引即可,聲明方法如下:
其中a、b、c、d均為數字,表示數據的索引起始值和末尾值。
也可以只寫一個數字,則此時數組使用默認索引,從0開始,數字表示它的最大下標索引。如下圖:
b.動態數組。如果在定義時並不知道需要使用的數組的長度是多少,則可以定義它為動態數組。定義動態數組,只需要在括號里面留空即可,如下圖:
待確定了數組的長度之后,可以使用ReDim來重新定義數組,如下圖:
三、使用
顯示所有數組元素,以 ,間隔
Function display_array(arrays)
Dim result As String
result = ""
Dim array_len As Integer
array_len = UBound(arrays) + 1
For i = 0 To array_len - 1
If result = "" Then
result = arrays(i)
Else
result = result & "," & arrays(i)
End If
Next
移除數組指定位置的元素
Function remove_index_in_array(arrays, index)
Dim array_len As Integer
array_len = UBound(arrays) + 1
For i = index To array_len - 2
arrays(i) = arrays(i + 1)
Next
If (array_len < 2) Then
Exit Function
End If
ReDim Preserve arrays((array_len - 2))
remove_index_in_array = arrays
End Function
向數組后追加一個值
Function insert_array_end(arrays, value)
Dim array_len As Integer
array_len = UBound(arrays) + 1
ReDim Preserve arrays((array_len))
arrays(array_len) = value
insert_array_end = arrays
End Function
判斷兩個數組的是否一樣(值與順序軍一樣)
Function is_euqal(array_1, array_2)
array_1_len = UBound(array_1) + 1
array_2_len = UBound(array_2) + 1
If (array_1_len <> array_2_len) Then
is_euqal = False
Exit Function
Else
For i = 0 To array_1_len - 1
If (array_1(i) <> array_2(i)) Then
is_euqal = fale
Exit Function
End If
Next
End If
is_euqal = True
End Function
獲取數組最后一個元素的值
Function get_array_last_value(arrays)
Dim array_len As Integer
array_len = UBound(arrays) + 1
get_array_last_value = arrays(array_len - 1)
End Function
設置數組最后一個元素的值
Function set_array_last_value(arrays, value)
Dim array_len As Integer
array_len = UBound(arrays) + 1
arrays(array_len - 1) = value
set_array_last_value = arrays
End Function