Чтение именованного диапазона Excel в массив (VBA)

Я хочу прочитать именованный диапазон ('NamedRange') в массив ('NamedRangeAsArray'). Я попытался несколько вещей без успеха, и я надеюсь найти способ сделать это независимо от длины или высоты именованного диапазона (и, следовательно, расширение размеров массива).

Я пытался:

Dim NamedRangeAsArray As Variant
NamedRangeAsArray = Range("NamedRange").Value

(читает только первую ячейку именованного диапазона в массив [1,1]);

также,

NamedRangeAsArray = Range(Workbook.Names("NamedRange").RefersToRange.Address)

(не работает вообще),

но безрезультатно. Есть идеи? Поделись, пожалуйста. Спасибо!

Обновить:

Dim NamedRangeAsArray() As Variant
NamedRangeAsArray() = Range(Workbook.Names("NamedRange").RefersToRange.Address)
For i = LBound(NamedRangeAsArray()) To UBound(NamedRangeAsArray())
    MsgBox NamedRangeAsArray(i, 1)
Next i

(читает только первую ячейку именованного диапазона в массив [1,1])

Спасибо @findwindow и @Brian за вашу помощь.

1 ответ

Решение

Попробуйте следующее:

Option Explicit

Sub Compare()

Dim NamedRangeAsArray() As Variant
NamedRangeAsArray = Application.Transpose(Range("NamedRange"))
For i = LBound(NamedRangeAsArray) To UBound(NamedRangeAsArray)
    MsgBox NamedRangeAsArray(i)
Next i

End Sub
Другие вопросы по тегам