2016-05-11 9 views
0

Ich bin ein Anfänger und ich habe diesen Code unten, aber dies kopiert nur die letzte Zeile von Blatt und Pasten in Blatt 2 Bereich. Grundsätzlich wird die leere Zeile nicht aktualisiert. Und wirft auch Laufzeitfehler 1004 - Anwendung definiert oder Objekt definiert Fehler. Jede Hilfe würde sehr geschätzt werden.Wie kopiert man bestimmte Spalten von einem Blatt und fügt sie in ein anderes Blatt in einem anderen Bereich ein?

Sub copypaste() 
Dim lastrow As Long, erow As Long 

lastrow = ThisWorkbook.Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row 
For i = 2 To lastrow 

Sheet1.Cells(i, 3).Copy 
erow = ThisWorkbook.Worksheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 
Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 2) 
Sheet1.Cells(i, 14).Copy 
Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 4) 
Sheet1.Cells(i, 6).Copy 
Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 3) 

Next i 

Application.CutCopyMode = False 
ThisWorkbook.Worksheets("sheet2").Columns().AutoFit 
Range("A1").Select 

End Sub 

Können sagen, dieses Blatt ist 1 sheet 1

und das ist sheet2: sheet2:

Wo die Header etwas anders sind bei der Benennung und es gibt auch eine Positionsänderung. Und die letzte Reihe in Blatt 1 ist abwechslungsreich.

+0

Sie haben erklärt, was der Code tut, können Sie erklären, was Sie tun sollen. Ein Beispiel für das gewünschte Ergebnis wäre auch hilfreich. –

+0

@tim: Was ich möchte, ist Spalte 3 von Blatt 1 einfügen in Spalte 2 von Blatt 2 einfügen, Spalte 14 von Blatt 1 kopieren und in Spalte 4 von Blatt 2 einfügen .. etc. Und ich möchte dasselbe tun, ohne die Header von beiden Blättern zu kopieren. Schließlich, wenn ich das Makro ausführe, möchte ich Daten von Blatt 1 zu Blatt 2 kopiert werden, OHNE Header und in einer anderen Region. Hoffe, das hilft – Visa

+1

@TimWilkinson Ich habe die Frage bearbeitet und fügte hinzu, Details – Visa

Antwort

1

Versuchen Sie dies, immer besser zu vermeiden, kopieren und einfügen.

Sub copypaste() 
Dim lastrow As Integer, erow As Integer, sheet1 As Worksheet, sheet2 As Worksheet 

Set sheet1 = Worksheets("Sheet1") 
Set sheet2 = Worksheets("Sheet2") 
lastrow = sheet1.Cells(Rows.Count, 1).End(xlUp).Row 

For i = 2 To lastrow 
    erow = sheet2.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row 
    sheet2.Cells(erow, 2) = sheet1.Cells(i, 3) 
    sheet2.Cells(erow, 3) = sheet1.Cells(i, 6) 
    sheet2.Cells(erow, 4) = sheet1.Cells(i, 14) 
Next i 

'ThisWorkbook.Worksheets("Sheet2").Columns().AutoFit 
'sheet1.Cells(1, 1).Activate 
End Sub 
+0

Dies ist immer noch mir Laufzeitfehler 1004 -Application definiert oder Objekt definierten Fehler .. – Visa

+0

Ich habe nur die letzten zwei Zeilen aus Neugier auskommentiert können Sie versuchen mit der neue Code und sehen, ob es noch passiert? –

+0

Es funktioniert .. :) Vielen Dank .. Aber bin gespannt wie. – Visa

Verwandte Themen