【问题标题】:Solving listobject paste special - Run time error 1004解决 listobject paste special - 运行时错误 1004
【发布时间】: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


【解决方案1】:

您似乎只是将tbl1 的内容附加到一堆其他表中。

不涉及剪贴板,而是将源 DataBodyRange 复制到 2D 变体数组:

Dim content As Variant
content = tbl1.DataBodyRange.Value

然后将新行添加到您的目的地:

tbl2.ListRows.Add

然后在那个位置转储你的二维数组:

tbl2.ListRows(tbl2.ListRows.Count).Range.Resize(UBound(content, 1)).Value = content

冲洗并重复每个目标表...应该几乎是即时的。

【讨论】:

  • 嗨,Mathieu 再次感谢您昨天的帮助。一个快速跟进的问题。我有一列包含诸如“2-10”和“3-12”之类的文本值,当它们从一个表移动到另一个表时,它们会转换为文本日期格式,例如“43477”和“43475”。关于任何建议如何保留原文或转回原文?
  • @Dmegaffi 啊,Excel 再次“有用”...您可以将这些列格式化为目标表中的文本,应该修复它。或者,在源数据中为这些值添加单引号。
猜你喜欢
  • 1970-01-01
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多