【问题标题】:How to copy ranges from several sheets to one sheet如何将范围从几张纸复制到一张纸
【发布时间】:2022-08-16 19:55:36
【问题描述】:

我想将范围从几个工作表复制到一张工作表。

要复制的范围是 C3 到最后一行数据。
我需要将它粘贴到 B6 主工作表上的一列中,然后在下一张工作表上重复该过程(再次从 C3 开始)到下一个 C6 列,依此类推到 J 列。

我试过了:

Set WkSh = ActiveSheet
Set DatShs = Sheets(Array(\"E0303_0\", \"E0304\", \"E0305\", \"E0306\", \"E0307\", \"E0308\", \"E0309\", \"E0310\", \"E0311_0\"))
Set DatSh = Sheets(DatSh)  \'I get Run time Error \'13\' Type mismatch here
Set Lrow = DatSh.Cells(Rows.Count, \"C\").End(xlUp)
TnD = DatSh.Range(\"C:B\").Find(\"*\", , , , xlByRows, xlPrevious).Row
Set RngGrp = DatSh.Range(\"TnD\", Lrow)

Sheets(\"E0303_0\").Range(RngGrp).Copy
ActiveWorkbook.WkSh.Range(\"A6\").Paste

ActiveWorkbook.Sheets(\"E0304\").Range(\"C3\" & Lrow).Copy
ActiveWorkbook.WkSh.Range(\"C6\").Paste

ActiveWorkbook.Sheets(\"E0305\").Range(\"C3\" & Lrow).Copy
ActiveWorkbook.WkSh.Range(\"D6\").Paste

ActiveWorkbook.Sheets(\"E0306\").Range(\"C3\" & Lrow).Copy
ActiveWorkbook.WkSh.Range(\"E6\").Paste

ActiveWorkbook.Sheets(\"E0307\").Range(\"C3\" & Lrow).Copy
ActiveWorkbook.WkSh.Range(\"F6\").Paste

ActiveWorkbook.Sheets(\"E0308\").Range(\"C3\" & Lrow).Copy
ActiveWorkbook.WkSh.Range(\"G6\").Paste

ActiveWorkbook.Sheets(\"E0309\").Range(\"C3\" & Lrow).Copy
ActiveWorkbook.WkSh.Range(\"H6\").Paste

ActiveWorkbook.Sheets(\"E0310\").Range(\"C3\" & Lrow).Copy
ActiveWorkbook.WkSh.Range(\"I6\").Paste

ActiveWorkbook.Sheets(\"E0311_0\").Range(\"C3\" & Lrow).Copy
ActiveWorkbook.WkSh.Range(\"J6\").Paste
  • ActiveWorkbook.WkSh 应该只是 WkSh 工作簿是变量的一部分。

标签: excel vba range copy-paste


【解决方案1】:

在前两行之后,您的代码毫无意义。您正在尝试将工作表设置为自身Set DatSh。你想要做的是遍历数组。您的 lastrow 不是行号,而是一个范围,您正在尝试添加到单元格中。以下是您要使用的逻辑,您可以根据需要进行修改。

Sub test()

    Dim SheetArray As Variant
    
    Set SheetArray = Sheets(Array("E0303_0", "E0304", "E0305", "E0306", "E0307", "E0308", "E0309", "E0310", "E0311_0"))
    
    For i = 1 To SheetArray.Count
        LR = Sheets(i).Cells(Rows.Count, 3).End(xlUp).Row
        Sheets(i).Range(Sheets(i).Cells(3, 3), Sheets(i).Cells(LR, 3)).Copy
        ActiveSheet.Cells(i, 6).Paste
    Next i
    
    
End Sub

【讨论】:

  • 感谢您的回复!我想我有点深入研究,事情变得很奇怪。看看你在这里有什么更有意义。
  • ActiveSheet.Cells(i, 6).Paste 行给我一个错误 438 '不支持对象或方法' 我不知道要为此调整什么。我的 Dim i 和 Dim i 一样长,而 Dim LR 则为 Variant。如果这能说明问题的话。再次感谢我对此仍然很陌生。
  • LR 应该是 Long。查找行时始终使用 Long。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 2019-01-17
  • 1970-01-01
相关资源
最近更新 更多