Это происходит из-за кеша, хранящегося в браузере. Перед запуском приложения вы можете удалить кеш и файлы cookie, сохраненные в вашем браузере.
Как насчет ...
Это сохранит данные, уже находящиеся в MyArray
Redim Preserve MyArray(15)
Это сотрет все предыдущие данные, существующие в MyArray
Redim MyArray(15)
Самый эффективный способ изменить размер массива - это ограничить количество раз, которое вы изменяете размер этого массива. Каждый раз, когда вы изменяете размер массива, VB будет брать весь массив и копировать его, тратя время и память.
Если вы не знаете размер вашего массива во время разработки, вам следует максимально приблизиться к максимальному размеру массива. array, затем заполните массив. После завершения заполнения массива вы можете уменьшить его до нужного размера.
В циклах часто лучше делать это предположение, удваивая размер текущего массива, когда у вас заканчивается место. Вы можете увидеть это в действии ниже: RedimTestA ()
изменяет размер массива на каждой итерации (1 000 000 раз) и RedimTestB ()
изменяет его размер только изредка (22 раза).
На моем ноутбуке RedimTestA ()
занимает 3,93 секунды, а RedimTestB ()
занимает 0,41 секунды.
Option Explicit
Sub RedimTest()
Dim tA, tB As Single
tA = RedimTestA(1000000)
tB = RedimTestB(1000000)
MsgBox "Test A takes : " & tA & ", and Test B takes : " & tB
End Sub
Function RedimTestA(iterations As Long) As Single
Dim t As Single
Dim i As Long
Dim aryString() As String
Dim myString As String
t = Timer
Do While i <= iterations
ReDim Preserve aryString(i) As String
aryString(i) = "ABCEFG123"
i = i + 1
Loop
RedimTestA = Timer - t
End Function
Function RedimTestB(iterations As Long) As Single
Dim t As Single
Dim i As Long
Dim aryString() As String
Dim myString As String
t = Timer
ReDim aryString(0) As String
Do While i <= iterations
If i >= UBound(aryString) Then
ReDim Preserve aryString(i * 2) As String
End If
aryString(i) = "ABCEFG123"
i = i + 1
Loop
ReDim Preserve aryString(i - 1) As String ' i - 1 becuase of the final i = i + 1
RedimTestB = Timer - t
End Function
Также обратите внимание, что вы можете изменить только крайнее правое измерение многомерного массива.