2015-07-21 64 views
0

请帮助我在处处搜索,但似乎所有方法都失败了。这是我的代码如何将范围数组复制到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个程序。但失败了。这只是总结,使它东阅读。由于

+1

它是什么意思做的数据?它目前在做什么?你有没有通过代码来找到哪条线有错误[如果有错误?] –

+0

我试过的最后4个程序中的每一个都是错误的,但都是错误的,因为它不会将MyArray的数据复制到范围从范围(“A15”)开始 –

+0

您是否尝试过没有“移调”的?一维数组是水平的......只有当你希望它们是垂直的时候,你才能转置。 –

回答

2

去有点比我的评论进一步...尝试以此为例...

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 

虽然你仍然不需要转置!

+0

谢谢你们。现在它工作。我需要将其声明为2维数组 –

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