【发布时间】:2019-09-06 21:57:17
【问题描述】:
我想将一个表中的所有数据移到另外 4 个表中。使用下面的代码,我收到一个 pastespecial 错误。代码比较长,下面贴出相关的sn-p。
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”: 范围类的 Pastespecial 失败
这个错误是由第一个粘贴特殊行触发的。
关于如何纠正此问题的任何想法?我在stacked上搜索了一段时间,但还没有找到解决方案。
谢谢!
【问题讨论】:
-
通常你想在你去之前
.Copy一些东西,然后PasteSpecial它-ListRows.Add会失去CutCopyMode吗?tbl2的列数是否与tbl1相同? -
嗨,Mathieu,感谢您的评论。我将所有的 pastespecial 立即移到副本下,它不再给我一个错误 - 好消息! - 但需要花费大量时间来计算。有没有更简洁的方法将列表行及其格式移动到另一个表格?
-
见下面的答案;希望有帮助!
-
Here's an important note 在使用
PasteSpecial时要牢记。我知道这种情况在调试代码时曾多次绊倒我(否则会奏效!)。
标签: excel vba listobject