2017-04-11 8 views
1

Ich verwende derzeit den folgenden Code zum Konsolidieren von Daten aus mehreren Blättern mit demselben Bereich mit Range.Copy-Methode mit Offset.VBA zum Einfügen von Wert mit Range.Copy-Methode mit Offset

Ich versuche, nur Werte anstelle von Formeln einzufügen. Aber ich bekomme auch die Formeln, die zum Fehler "#REF!" Führen. Kann mir bitte jemand mit der richtigen Syntax helfen? Ich habe gerade angefangen, VBA-Codierung zu lernen.

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 

Antwort

1

Sie können direkt Werte zuweisen, nicht benötigen Kopieren/Einfügen verwenden und keine Auswahl/Aktivierung:

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

Sie können dies tun, ohne jedes Blatt einzeln aktivieren und mit Paste Wert kopieren nur

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

Hallo SJR, es hat funktioniert. Vielen Dank für die Hilfe. –

0

Sie müssen die .PasteSpecial-Methode verwenden:

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