2014-11-12 9 views
0

Я пытаюсь переделать и сохранить свой массив, но он продолжает придумывать ошибку, в которой говорится, что это вне пределов досягаемости. Я не знаю почему?Excel VBA Redim Preserve Вне диапазона

Dim FirstArray(0) As Variant 
Dim SecondArray(0) As Variant 
Dim ArrSize As Variant 

row = 9 
ArrSize = 1 

Do While Not Cells(row, 3).Comment Is Nothing 
    FirstArray(ArrSize - 1) = Cells(row, 3).Value 
    ReDim Preserve FirstArray(ArrSize) 
    ArrSize = ArrSize + 1 
    row = row + 1 
Loop 
+1

Какая линия выдает ошибку? – RBarryYoung

ответ

4

Оно должно быть:

Dim FirstArray() as Variant 
Dim SecondArray() As Variant 

я сделал ту же ошибку, первоначально

Чтобы объявить переменную массива, не дать ему первоначальный размер.

Кроме того, убедитесь, что вы перевернули его до 1, прежде чем назначить его значение 0.

ReDim Preserve FirstArray(ArrSize) 
FirstArray(ArrSize - 1) = Cells(row, 3).Value 

Надеюсь, это поможет!

+1

Большое спасибо – HumanlyRespectable

1

Вы также можете использовать объект ArrayList, который сохраняет необходимость в действиях ReDim. Также добавлена ​​функциональность (see here for example)

Dim FirstArray As Object 

Set FirstArray = CreateObject("System.Collections.ArrayList") 
row = 9 

Do While Not Cells(row, 3).Comment Is Nothing 
    FirstArray.Add Cells(row, 3).Value 
    row = row + 1 
Loop 
Смежные вопросы