Одно присвоение Value2 даёт двумерный Variant даже для одного столбца. Индексация с 1. После обработки запишите массив обратно через Resize.
Прочитать диапазон в массив
Обойти тысячи ячеек в цикле слишком медленно.
Код
Sub ReadBlock()
Dim ws As Worksheet
Dim data As Variant
Dim i As Long
Set ws = ThisWorkbook.Worksheets("Данные")
data = ws.Range("A2:D1000").Value2
For i = 1 To UBound(data, 1)
' data(i, 1)
Next i
End Sub