Excel在单元格中粘贴数组(将单元格调整为数组尺寸后)

时间:2019-06-19 14:04:15

标签: arrays excel vba paste transpose

我想在一个单元格上粘贴二维数组,将RESIZE()的范围扩展到数组的确切大小。

我得到一个 运行错误类型13 类型不匹配

ReDim conceptArray(1 To 5, NumberOfConcepts + 1)


Dim firstcellofTbl As range
    Set firstcellofTbl = qbaTbl.ListColumns("name").range.iTem(1).Offset(1, 0)
' this is just a test:
'firstcelloftbl is a single cell
firstcellofTbl.Select


firstcellofTbl.Resize(UBound(conceptArray, 2), UBound(conceptArray, 1)) = Application.Transpose(conceptArray)

无论数组的大小是我理所当然的。 a)firstcellofTbl只是一个单元。并且由于选择有效而存在。

调整大小与数组具有相同的尺寸,因为它只是调整为数组的尺寸

c)调整大小将两个尺寸互换,因此是application.transpose

这是我添加来进行测试的代码:

 MsgBox UBound(conceptArray, 1)
 MsgBox UBound(conceptArray, 2)
 Dim newrange As range
    Set newrange = firstcellofTbl.Resize(UBound(conceptArray, 2), UBound(conceptArray, 1))
MsgBox newrange.address

存在:     UBound(conceptArray,1)= 5     UBound(conceptArray,2)= 439

newrange.address =$a$3:$E$441

这似乎匹配,因为新范围的大小与转置数组相同

我可能做错了什么? 非常感谢

注意: 使用这种将数据粘贴到列表对象(或工作表)中的方法比使用for循环填充要快几百万倍,这就是使用它的原因。

1 个答案:

答案 0 :(得分:0)

问题在于数组的尺寸是变体。

原始:

dim conceptarray() as variant

解决方案:

dim conceptarray() as string