2016-06-28 55 views
0

我想将命名范围('NamedRange')读入数组('NamedRangeAsArray')。我已经尝试了许多没有成功的事情,并希望找到一种方法来做到这一点,不管命名范围的长度或高度(以及扩展名,然后是数组的维数)。将Excel命名范围读入数组(VBA)

我曾尝试:

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和@布赖恩对你有所帮助。

+4

尝试'昏暗NamedRangeAsArray()作为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