Excel VBA从命名范围填充数组

我需要使用另一个工作簿中命名范围的单元格填充数组的值。 到目前为止我所拥有的并不是为我工作:

Dim vArray() as Variant vArray = Workbooks("Book2").Worksheets("Sheet1").Range("myRange") Debug.Print vArray(1) 'yields error 

也没有运气:

 vArray = Workbooks("Book2").Names("myRange") 

要么

 vArray = Workbooks("Book2").Names("myRange").RefersToRange 

尝试将打印行更改为:

 Debug.Print vArray(1, 1) 

以下是你如何循环他们:

 Sub Test() Dim vArray() As Variant vArray = Range("myRange") Dim i As Long For i = LBound(vArray, 1) To UBound(vArray, 1) Debug.Print vArray(i, 1) Next End Sub 

* 编辑 *

要使用'Book2'而不必激活它,你可以这样做:

 Sub Test() Dim vArray() As Variant Dim rng As Range Dim wbk As Workbook Set wbk = Excel.Application.Workbooks("Book2.xls") Set rng = wbk.Worksheets("Sheet1").Range("myRange") vArray = rng Dim i As Long For i = LBound(vArray, 1) To UBound(vArray, 1) Debug.Print vArray(i, 1) Next End Sub 

从另一本书中转换第5行到第2行:

 Set wbk = Excel.Application.Workbooks.Open("C:\Users\myname\Desktop\Book2.xls") 

另一种方法..testing

 Sub Test() Dim vArray As Range Dim rng As Range With ActiveSheet Set vArray = .Range("myRange") For Each rng In vArray Debug.Print rng.Value Next rng End With End Sub