EDITED для ясности в свете приведенных ниже комментариев.
Присвоение значения диапазона переменной Variant приведет к тому, что переменная, содержащая двумерный массив вариантов с одним индексом, будет проиндексирована.по строке и столбцу (в указанном порядке) или содержащие фактическое значение диапазона, если это диапазон из 1 ячейки.
В вашем конкретном случае это будет работать:
Sub test1()
Dim Arr As Variant
Dim row As Long
Dim col As Long
row = 1
col = 1
Arr = Range("A1:A10").Value
MsgBox Arr(row, col)
End Sub
В более общем подходе, если ваш нижестоящий код рассчитан на работу с массивом, но у диапазона есть возможность охватить одну ячейку, вы можете принудительно создать массив даже в такой ситуации следующим образом:
Sub test2()
Dim rng As Range
Dim Arr As Variant
Dim row As Integer
Dim col As Integer
row = 1
col = 1
Set rng = Range("A1:A1") '<== 1 cell only!
Arr = rng.Value
'Ensure we're dealing with an array even in this case.
If Not IsArray(Arr) Then
ReDim Arr(1 To 1, 1 To 1) As Variant
Arr(1, 1) = rng.Value
End If
MsgBox Arr(row, col)
End Sub