如何将范围数组复制到VBA中的特定目的地?

请帮助我到处search,但似乎所有的方法都失败了。 这是我的代码

Dim MyArray(1 To 20) As Range Dim A0 As Integer Cells(1, 1).Select For A0 = 1 To 20 Set MyArray(A0) = Range(ActiveCell, ActiveCell.Offset(1, 0)) ActiveCell.Offset(0, 1).Select Next Range("A15:T15") = Application.Transpose(MyArray) Range("A15:T16") = Application.Transpose(MyArray) Range("A15:T15") = WorksheetFunction.Transpose(MyArray) Range("A15:T16") = WorksheetFunction.Transpose(MyArray) 

我已经尝试了每个最后的4个程序。 但失败了。 这只是总结,使它东阅读。 谢谢

比我的评论进一步…试试这个例子…

 Sub a() Dim x(2) As Integer x(0) = 1 x(1) = 2 Range("A10:B10").Value = x End Sub 

这正确地输出数组到单元格A10B10


在二维数组的情况下,你可以使用这个例子…

 Sub a() Dim x(2,2) As Integer x(0,0) = 1 x(0,1) = 2 x(1,0) = 3 x(1,1) = 4 Range("A10:B11").Value = x End Sub 

你仍然不需要转置!

您可以将数据从“范围到数组”和“数组到范围”移动,每个操作只使用一行。

 Sub CopyUsingArray() ' Create array Dim Marks() As Variant ' Read 20 values into array from sheet1 Marks = Range("A1:T1").Value ' Write the 20 values to row 15 Range("A15:T15").Value = Marks End Sub 

当然,如果你只是从范围复制到另一个你不需要使用数组。 你可以像这样使用Range.Copy方法

 Sub CopyRange() Range("A1:T1").Copy Destination:=Range("A15") End Sub 

如果你需要调换数据,你可以这样做

 Sub CopyRange_Transpose() Range("A1:T1").Copy Range("A15").PasteSpecial Transpose:=True End Sub