2017-04-11 447 views
1

我正在使用以下代码来使用偏移量使用Range.Copy方法合并来自具有相同范围的多个工作表的数据。使用Range.Copy方法使用Offset对VBA进行粘贴值

我想只粘贴值而不是公式。但是,我也得到了导致错误“#REF!”的公式。 任何人都可以请帮助我正确的语法? 我刚开始学习VBA编码。

For Each ws In Sheets(Array("A", "B", "C", "D", "E")) 
    ws.Activate 
    bottomD = Range("BC" & Rows.Count).End(xlUp).Row 
    Range("BC3:BE" & bottomD).Copy Sheets("Summary").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) 
    Next ws 

回答

1

您可以直接赋值,不需要使用复制/粘贴并且不需要选择/激活:

For Each ws In Sheets(Array("A", "B", "C", "D", "E")) 
    With ws.Range("BE3", ws.Cells(ws.Rows.Count, "BC").End(xlUp)) 
     Sheets("Summary").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) _ 
      .Resize(.Rows.Count, .Columns.Count).value = .value 
    End With 
Next ws 
2

你可以做到这一点没有激活每个片,并使用PasteSpecial的复制值仅

Sub x() 

Dim ws As Worksheet, bottomD As Long 

For Each ws In Sheets(Array("A", "B", "C", "D", "E")) 
    bottomD = ws.Range("BC" & ws.Rows.Count).End(xlUp).Row 
    ws.Range("BC3:BE" & bottomD).Copy 
    Sheets("Summary").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlValues 
Next ws 

End Sub 
+0

嗨SJR,它的工作。非常感谢你的帮助。 –

0

你需要使用.PasteSpecial方法:

Range("BC3:BE" & bottomD).Copy 
Sheets("Summary").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).pastespecial xlPasteValues