在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)