如何将范围数组复制到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
这正确地输出数组到单元格A10
和B10
在二维数组的情况下,你可以使用这个例子…
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