我想将所有数据从一个表移到另外4个表中。使用以下代码,我收到一个粘贴特殊错误。该代码很长,因此相关代码段发布在下面。
Set tbl2 = ws1.ListObjects("Table2")
Set tbl3 = ws2.ListObjects("Table3")
Set tbl4 = ws3.ListObjects("Table4")
Set tbl5 = ws4.ListObjects("Table5")
For i = 1 To tbl1.ListRows.Count
tbl1.ListRows(i).Range.Copy
tbl2.ListRows.Add 1, True
tbl2.ListRows(1).Range.PasteSpecial xlPasteFormats
tbl2.ListRows(1).Range.Value = tbl1.ListRows(i).Range.Value
tbl3.ListRows.Add 1, True
tbl3.ListRows(1).Range.PasteSpecial xlPasteFormats
tbl3.ListRows(1).Range.Value = tbl1.ListRows(i).Range.Value
tbl4.ListRows.Add 1, True
tbl4.ListRows(1).Range.PasteSpecial xlPasteFormats
tbl4.ListRows(1).Range.Value = tbl1.ListRows(i).Range.Value
tbl5.ListRows.Add 1, True
tbl5.ListRows(1).Range.PasteSpecial xlPasteFormats
tbl5.ListRows(1).Range.Value = tbl1.ListRows(i).Range.Value
Next i
“运行时错误1004”: 范围类别的粘贴失败
此错误是由第一行粘贴特殊行触发的。
有关如何更正此问题的任何想法?我已经搜索了一段时间,但尚未找到解决方案。
谢谢!
答案 0 :(得分:1)
似乎您只是将tbl1
的内容附加到其他表中。
将源DataBodyRange
复制到2D变量数组中,而不是使用剪贴板:
Dim content As Variant
content = tbl1.DataBodyRange.Value
然后将新行添加到目的地:
tbl2.ListRows.Add
然后将2D数组转储到该位置:
tbl2.ListRows(tbl2.ListRows.Count).Range.Resize(UBound(content, 1)).Value = content
漂洗并重复执行每个目标表...应该几乎是即时的。