2014-01-22 2 views
0

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

Я столкнулся с ошибкой времени выполнения 91: «Объектная переменная или с переменной блока не установлена» при запуске кода.

Я не опытный кодер, но мне удалось изолировать ошибку, и я уверен, что она исходит из псевдо-кода ниже.

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

Dim ArrayName() as Range 
    Dim counter as Integer 

    If condition = True Then 

     counter = counter + 1 

     ReDim Preserve ArrayName(0, counter - 1) 
     ArrayName(0, counter - 1) = Cells(counter, counter) 'I get a runtime error here 

    End If 

спасибо.

ответ

0

Если вы хотите сохранить диапазоны в массиве нужно добавить Set, прежде чем проблема строки таким образом:

Set ArrayName(0, counter - 1) = Cells(counter, counter) 

Но если вы хотите сохранить значения ячеек, которые необходимо изменить декларацию линии к этому :

Dim ArrayName() as Double 'or String or Variant depending on value type you need to keep in array 
+0

Не могу поверить, что все было так просто! Огромное спасибо. – user3217984

Смежные вопросы