我想在一个单元格上粘贴二维数组,将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循环填充要快几百万倍,这就是使用它的原因。
答案 0 :(得分:0)
问题在于数组的尺寸是变体。
原始:
dim conceptarray() as variant
解决方案:
dim conceptarray() as string