2016-06-28 2 views
0

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

Я попытался:

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

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

также

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

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

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

Update:

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 и @ Брайан за помощь.

+4

Попробуйте 'Dim NamedRangeAsArray() As Variant' – findwindow

+3

Как вы в настоящее время она' NamedRangeAsArray' не является массивом. – Brian

+0

Спасибо. Однако даже в скобках массив содержит только первую ячейку именованного диапазона. Есть идеи? Благодаря! – PBG

ответ

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