Чтение именованного диапазона 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