Excel VBA:复制/粘贴范围

Posted

技术标签:

【中文标题】Excel VBA:复制/粘贴范围【英文标题】:Excel VBA: Copying/Pasting Range 【发布时间】:2018-02-19 20:31:21 【问题描述】:

我正在编写一个宏,它可以打开许多不同的工作簿,从每个工作簿复制数据,然后编译成一个“主”工作簿。在下面的代码示例中,wb2 是我从中复制的工作簿之一,而 wb1 是主工作簿。

lrow3A 是源工作簿中的最后一行数据。 Lrow3 是主工作簿中的最后一行数据。

lrow3A = wb2.Sheets("DCF3").Cells(1048576, 2).End(xlUp).Row
wb2.Sheets("DCF3").Range(Cells(6, 1), Cells(lrow3A, 16)).Copy _
    Destination:=wb2.Worksheets("DCF3").Cells(lrow3 + 1, 2)

我在复制行收到“下标超出范围”错误。

【问题讨论】:

如果要复制到master,那不应该是Destination:=wb1 吗? 您还需要为Cells() 添加工作簿/工作表。我想你需要:wb2.Sheets("DCF3").Range(wb2.Sheets("DCF3").Cells(6, 1), wb2.Sheets("DCF3").Cells(lrow3A, 16)).Copy 您的 .Range(Cells(6, 1), Cells(lrow3A, 16)) 缺少正确的父工作表引用。见this。 【参考方案1】:

我认为你应该编码:

With wb2.Sheets("DCF3") 'reference "source" worksheet
    lrow3A = .Cells(.Rows.Count, 2).End(xlUp).Row ' get referenced sheet column "B" last not empty cell row index 
    .Range("A6:P" & lrow3A).Copy _
    Destination:=wb1.Worksheets("DCF3").Cells(lrow3 + 1, 2) 'copy referenced sheet range in columns A:P from row 6 to row 'lrow3A' and paste it to "master" workbook sheet "DCF3" starting from its column B cell at row 'lrow3'+1
End With

【讨论】:

如何按值粘贴? @ashleych, check this out

以上是关于Excel VBA:复制/粘贴范围的主要内容,如果未能解决你的问题,请参考以下文章

从 Google 表格复制特定范围并将值粘贴到 excel

Excel VBA - 循环遍历多个文件夹中的文件,复制范围,粘贴到此工作簿中

无法粘贴 - Excel VBA

使用 Excel VBA 实现复制 粘贴 和保存,并自动运行VBA

在 Excel 中使用 VBA,如何在 Outlook 中粘贴表格然后将表格转换为文本?

Excel VBA函数仅粘贴打印区域内的内容而不是整个工作表?