Pseudo Dynamic Arrays
Another idea:
In VB often I've used something that I call "Pseudo Dynamic Arrays"!
The huge problem with rediming arrays and copying all the data (to preserve the already saved elements) is:
It costs to much time!
So I
dimmed my "dynamic" array at the beginning at some convenient size (it doesn't really matter):
Dim PersonArray(32) As PersonType
And I introduced a variable to count the already saved elements:
Dim PersonArrayCount As Int
When I have to save a new entry I used some code to check whether there is still free space. If not: Create more space by redimming and copying!
And this is the essential trick:
Double the available space! 
(Applying the principle of reverse binary search.)
Example:
Sub AddPerson(p As PersonType)
PersonArrayCount = PersonArrayCount + 1
If PersonArrayCount > PersonArray.Length Then
Dim PersonCache(PersonArray.Length) As PersonType
Dim i As Int
For i = 0 To PersonArray.Length - 1
PersonCache(i) = PersonArray(i)
Next
Dim PersonArray(2 * PersonArrayCount) As PersonType
For i = 0 To PersonCache.Length - 1
PersonArray(i) = PersonCache(i)
Next
End If
PersonArray(PersonArrayCount - 1) = p
End Sub
In this way the average extra cost remains very cheap and therefore the programm will run much faster!