2016-06-13 9 views
0

Momentan habe ich einen VBA-Code, der die letzte aktive Zeile mit Formeln und allen kopiert und sie in die nächste Zeile darunter einfügt. Stattdessen möchte ich, dass die letzten 10 aktiven Zeilen kopiert und darunter eingefügt werden. Kann mir jemand helfen, meinen aktuellen Code zu optimieren, um dies zu ermöglichen?Wie die letzten 10 aktiven Zeilen anstelle der letzten aktiven Zeile kopiert werden

'Sub RunMost() 

     Dim ws As Worksheet 


      For Each ws In Sheets 
      If ws.Name = ("Sheet1") Then 
       ws.Activate 

    ' Go to last cell 
    Cells(Rows.Count, 2).End(xlUp).Offset(2, 0).Select 

    ' Copy formula from cell above 
    Rows(Selection.Row - 1).Copy 
    Rows(Selection.Row).Insert Shift:=xlDown 
    End If 
    Next ws 

End Sub 
+0

Haben Sie versucht, die 'Reihen zu ersetzen (Selection.Row - 1)' 'mit Zeilen (Selection.Row - 10)'? – Dave

+1

Ich empfehle, durch zu lesen, wie man '.Select' vermeidet (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros), die etwas verlieren sollte Licht darauf. Ich glaube, wenn man das durchliest, kann man zumindest * anfangen * das obige zu schleifen. Und auch @ Daves Vorschlag ... – BruceWayne

+0

Bereich (Zeilen (selection.row-11), Zeilen (selection.row-1)). Kopieren –

Antwort

0

range(rows(selection.row-11),rows(selection.row-1)).copy