一、概念
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