我需要使用另一个工作簿中命名范围的单元格填充数组的值.到目前为止我所拥有的并不适合我:
Dim vArray() as Variant
vArray = Workbooks("Book2").Worksheets("Sheet1").Range("myRange")
Debug.Print vArray(1) 'yields error
Run Code Online (Sandbox Code Playgroud)
也没有运气:
vArray = Workbooks("Book2").Names("myRange")
Run Code Online (Sandbox Code Playgroud)
要么
vArray = Workbooks("Book2").Names("myRange").RefersToRange
Run Code Online (Sandbox Code Playgroud)
尝试将打印行更改为:
Debug.Print vArray(1, 1)
Run Code Online (Sandbox Code Playgroud)
以下是如何循环遍历它们:
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
Run Code Online (Sandbox Code Playgroud)
*编辑*
要使用'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
Run Code Online (Sandbox Code Playgroud)
要将book2从另一本书更改第5行打开到此:
Set wbk = Excel.Application.Workbooks.Open("C:\Users\myname\Desktop\Book2.xls")
Run Code Online (Sandbox Code Playgroud)