Option Explicit
Sub TestMe()
Dim arrayRange As Range
Set arrayRange = Application.InputBox("Enter a range", "Range:", Type:=8)
Dim myArr As Variant
Dim size As Long: size = arrayRange.Rows.Count - 1
ReDim myArr(size)
Dim myCell As Range
Dim myRow As Long: myRow = 0
For myRow = 0 To size
myArr(myRow) = arrayRange.Cells(myRow + 1, 1)
Next
Dim myVal As Variant
For Each myVal In myArr
Debug.Print myVal
Next myVal
End Sub
Хитрость заключается в том, чтобы обратить внимание на то, как назначен массив. Идея состоит в том, что массив должен быть размером с номер строки в выбранной области, следовательно:
Dim size As Long: size = arrayRange.Rows.Count - 1
ReDim myArr(size)
-1
необходим, потому что массивы начинаются с 0
, если кто-то не напишет Option Base 1
в верхней части нашего кода и не сломает все, на что мы надеялись.
Поскольку массивы начинаются с 0
, хорошо выполнить цикл следующим образом:
For myRow = 0 To size
myArr(myRow) = arrayRange.Cells(myRow + 1, 1)
Next