在VBA中创build和移植数组

我希望加载到一个数组范围内的值,并转置该数组到另一个位置(不同的工作簿)

我正在使用下面的论坛post来了解如何做到这一点:

http://www.mrexcel.com/forum/excel-questions/629320-application-transpose-visual-basic-applications-array.html

下面是我现在正在使用的代码,我得到了1004对象定义的错误。 任何人都可以发现我做错了什么?

我确实发现代码工作,如果我不设置tRangeArray,而是做Sheets("sheet1").Range("C12:C19).Value = Application.Transpose(MyArray) ,但我不知道为什么这是不同的我的代码。

 Sub copy_data() Dim cRange As Range, aRange As Range, tRange1 As Range, wbk1 As Workbook, wbk2 As Workbook Dim MyArray() As Variant, tRangeArray As Range Set wbk1 = ThisWorkbook MyArray = Range("E12:L12") Set tRangeArray = wbk1.Sheets("sheet1").Range("C12:C19") Sheets("sheet1").Range(tRangeArray).Value = Application.Transpose(MyArray) 

正如我在评论中提到的,只需使用:

 tRangeArray.Value = Application.Transpose(MyArray) 

Sheets("sheet1").Range(tRangeArray).Value不起作用,因为Range接受单个参数 – 带有范围地址的string(范围本身): Range(addr) ,两个参数 – 左上angular和右下angular的单元格: Range(cell_1,cell_2)

类似的,但使用resize和Ubound:

 Dim myarray As Variant myarray = Array(1, 2, 3, 4, 5) Sheets("sheet1").Range("A1").Resize(UBound(myarray), 1).Value = Application.Transpose(myarray)