【问题标题】:Pasting error while copying multiple worksheets and pasting it in one worksheet using VBA ,复制多个工作表并使用 VBA 将其粘贴到一个工作表中时出现粘贴错误,
【发布时间】:2023-03-18 10:11:01
【问题描述】:

我想复制各种工作表中的所有行和列,然后粘贴到一个工作表中,一个工作表位于另一个工作表的下方。

但我收到错误消息。我尝试使用网站提供的各种示例。但没有一个对我有用。请帮我解决。我在数组中传递工作表。所以我会按顺序获取工作表。

我提供了出现错误的代码。我在粘贴部分遇到错误。据说它应该是 A1 或 R1C1 。但我需要将所有工作表粘贴在一张之下。

For m = 1 To fnum


lastrow = tempws.Range("A" & ws.Rows.Count).End(xlUp).Row

ws(m).Cells.Copy tempws.Cells((lastrow + 1), 1)

Next m

tempws.Save

【问题讨论】:

  • 那么您有一个超级工作表 可以复制从各个工作表复制所有行和列? :P 您是否要从不同的工作表中复制特定的行(因为一行至少包含一列或多列)并粘贴到最后一张工作表中?

标签: vba copy paste


【解决方案1】:

这是因为您试图将工作表的 ENTIRE 单元格范围复制到主工作表上小于整个工作表的部分中。它不会起作用,因为没有足够的细胞剩余。您需要缩小复印表的尺寸以仅捕获带有数据的单元格。

这样的东西应该是一个很好的框架来帮助你开始。您可能需要调整一些东西以适应您的数据。此外,这假定复印表中的所有数据都从单元格 A1 开始。再次,根据需要进行调整。

For me = 1 to fnum

    lastrow = tempws.Range("A" & tempws.Rows.Count).End(xlUp).Row 'i changed this to tempws, as you just had ws

    With ws(m)

        lastcopyrow = .Range("A" & .Rows.Count).End(xlup).Row
        lastcopycol = .Range("A" & .Columns.Count).End(xlToLeft).Column    

        .Range("A1",.cells(lastcopyrow, lastcopycol)).Copy tempws.Cells((lastrow + 1), 1)

    End With

Next m

此外,如果由于 A1 或 R1C1 表示法而出现引用错误,您可能只想粘贴为值,而不是直接复制/粘贴。

【讨论】:

  • 感谢它正在工作。 lastcopycol 几乎没有变化,它正在提供价值。我只是替换了“1”而不是“A”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-27
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
相关资源
最近更新 更多