如何将Range Array复制到VBA中的特定目标?

时间:2015-07-21 12:46:18

标签: excel vba

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

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个程序。但失败了。这只是一个总结,使其向东读。感谢

2 个答案:

答案 0 :(得分:2)

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

Sub a()

Dim x(2) As Integer
x(0) = 1
x(1) = 2

Range("A10:B10").Value = x

End Sub

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

对于2D阵列,您可以使用此示例...

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

你仍然不需要转置!

答案 1 :(得分:0)

您可以将数据从"范围移动到数组"和"阵列到范围"每次操作只使用一行。

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