使用范围填充数组)单元格

我得到一个运行时错误1004,如果我运行与注释掉的行激活子。 它运行正常,但我需要增加数组,以读取另一个循环中的更多数据。 我宁愿使用范围(单元格选项。

Option Explicit Dim myarray As Variant 'There are 6 numbers stored in a1 to a6 on sheet1 Sub read_as_entire_() 'This line fails if I use Cells... 'myarray = Worksheets("Sheet2").Range(Cells(1, 1), Cells(6, 1)).Value 'This line works fine myarray = Worksheets("Sheet2").Range("a1:a6").Value Sheet2.Range("b1:b6") = myarray 'Sheet2.Range(Cells(1, 2), Cells(6, 2)) = myarray End Sub 

有什么不同?

“单元格”指的是活动工作表的范围(不是“工作表2”,否则工作),工作表(“工作表2”)。范围只接受“工作表2”工作表的范围,所以会引发错误。 你可以解决这个问题:

 myarray = Worksheets("Sheet2").Range(Worksheets("Sheet2").Cells(1, 1), Worksheets("Sheet2").Cells(6, 1)).Value 

或更短

 with Worksheets("Sheet2") myarray = .Range(.Cells(1, 1), .Cells(6, 1)).Value end with 

我更喜欢使用

 myarray = Worksheets("Sheet2").Cells(1, 1).Resize(6,1) 

我怀疑,当您在注释部分中引用单元格时,它并不是指Sheet2。 这可能是指活动工作表。

要testing这个尝试修改行到以下内容:

 With Worksheets("Sheet2") myarray = .Range(.Cells(1, 1), .Cells(6, 1)).Value End With 

我使用的是一个结构,这意味着当我使用该公式中的点('。')时,它指的是在最接近的语句块的起始处引用的对象。