Вы инициализировали переменную i
и массив values
?
Перед циклом:
i=0
Redim Preserve valus(i)
values(i)=1 'or else we will never enter the loop
В цикле (последние строки перед оператором цикла):
i = i + 1
Redim Preserve values(i)
values(i) = xcell.Value
Но вам даже не нужен массив values
(то есть если вы не будете использовать его где-либо еще в вашем коде), просто сохраните последнее значение ячейки в i
.
Перед циклом:
i = 1 'or we won't enter the loop
while i<>0 'starting the loop
здесь идет ваш код цикла, а затем до конца цикла:
i = xcell.Value
Loop
EDIT:
Но если у вас есть фактическое значение 0 в качестве значения ячейки в вашем списке, цикл остановится до конца списка, поэтому вы можете захотеть проверить, не содержит ли ваша ячейка никаких символов:
Предполагая, что:
Dim i as Variant
Тогда условие цикла в последнем примере также может быть:
while i<>""
И это остановится, только если ячейка действительно пуста (= не имеет содержимого)