- 数组size固定的场合,追加元素,会报错
Sub Hello()
Dim arr() As String
Dim str As String
str = "1,2,3,4,5"
arr = Split(str, ",")
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next
Debug.Print "--------------"
arr(5) = "6"
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next
End Sub
输出结果:
1
2
3
4
5
--------------
2.使用redim 重新定义数组的size,看下结果
Sub Hello()
Dim arr() As String
Dim str As String
str = "1,2,3,4,5"
arr = Split(str, ",")
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next
Debug.Print "--------------"
ReDim arr(UBound(arr) + 1)
arr(5) = "6"
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next
End Sub
输出结果:
1
2
3
4
5
--------------
6
※6之前的五个数字被清空了,所以输出是空白,但是size确实增加了
3.那么怎样才能又能改变size,又能保持之前的数据呢?
Sub Hello()
Dim arr() As String
Dim str As String
str = "1,2,3,4,5"
arr = Split(str, ",")
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next
Debug.Print "--------------"
ReDim Preserve arr(UBound(arr) + 1)
arr(5) = "6"
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next
End Sub
输出结果:
1
2
3
4
5
--------------
1
2
3
4
5
6
4.综合2和3得到结果,直接使用redim会增加size,但是会清空之前的数据,使用ReDim Preserve会既增加size,同时保持住之前的数据
5.数组清空,相当于初期化
Sub Hello()
Dim arr() As String
Dim str As String
str = "1,2,3,4,5"
arr = Split(str, ",")
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next
Debug.Print "--------------111"
ReDim Preserve arr(UBound(arr) + 1)
arr(5) = "6"
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next
Debug.Print "--------------222"
Erase arr
Debug.Print arr(0)
End Sub