2016-10-24 3 views
0

Ich habe eine Tabelle, die ich X Menge von Zeilen hinzufügen muss. Der Code unten ist, was ich derzeit habe. Ich muss dieses Makro jedes Mal ändern, wenn ich eine andere Anzahl von Zeilen benötige.Wie Code auf Nummer in Zelle in Excel wiederholen?

Ich frage mich, ob ich dieses Makro schreiben könnte, so dass es X Menge von Zeilen, wo X die Zahl, die der Benutzer in Zelle A1 setzt, produzieren wird.

Also, welchen Code kann ich die Zelle A1 lesen? Dann, wie kann ich meinen Code wiederholen, um fortwährend eine Reihe bei A10 x Zeiten hinzuzufügen.

Sub Insert_specific_rows() 
Dim CurrentSheet As Object 
    For Each CurrentSheet In ActiveWindow.SelectedSheets   
    CurrentSheet.Range("A10:A138").EntireRow.Insert 
    Next CurrentSheet 
End Sub 

Darüber hinaus ist es eine Möglichkeit, diesen Code neu zu schreiben, so dass, wenn es eine neue Zeile hinzufügt, sondern bringt auch Kopien Sie alle Zellen aus B9 bis Z9?

mit Lösung EDITED ----

So dank all Ihre Hilfe, hier ist der Code, den ich jetzt habe. Allerdings muss ich dies manchmal für bis zu 50.000 Zeilen tun, und dieser Code scheint Zeile für Zeile zu funktionieren. Irgendwelche Vorschläge, wie man das verbessert?

Vielleicht muss es alle Zeilen hinzufügen, und machen Sie dann eine Kopie der Formel?

aktualisiert Formel:

Sub All_Lines_Add_Rows_Macro() 
Dim CurrentSheet As Object 
Dim numRows As Long 
For Each CurrentSheet In ActiveWindow.SelectedSheets 
    numRows = InputBox("How many lines is your CDM?", "Rows to Add") - 1 
    Range("A10:Z10").ClearContents 
    For i = 1 To numRows 
     CurrentSheet.Range("A10").EntireRow.Insert 
     CurrentSheet.Range("AA9:EY9").Copy 
     CurrentSheet.Range("AA10").PasteSpecial Paste:=xlPasteAll 
     Application.CutCopyMode = False 
    Next i 
    Rows(9).EntireRow.Delete 

Next CurrentSheet 

End Sub

Ich glaube, ich die Add Zeilen in der 'For i' Schleife verlassen. Nachdem alle Zeilen hinzugefügt wurden, wie kann ich dann von A10 nach (A10 + X - 1 Zeilen) kopieren?

+0

Blick auf Usedrange und füllen unten –

+0

Sie könnten eine 'InputBox' fügen Sie die Nummer. http://www.exceltrick.com/formulas_macros/vba-inputbox/ –

Antwort

0

Wenn ich Ihre Frage verstehe, möchten Sie den Wert von A1 auf jedem Blatt überprüfen und so viele Zeilen hinzufügen? Nehmen Sie eine kleine Änderung an Ihrem Code:

Sub Insert_specific_rows() 
    Dim CurrentSheet As Object 
    Dim numRows As Long 
    For Each CurrentSheet In ActiveWindow.SelectedSheets 
     numRows = CurrentSheet.Range("A1").Value 
     CurrentSheet.Range("A10:AE10").Delete 
     for i = 1 to numRows   
      CurrentSheet.Range("A10").EntireRow.Insert 
     next i 
     CurrentSheet.Range("B9:Z9").Copy 
     CurrentSheet.Range("B10:B" & (9 + numRows)).PasteSpecial Paste:=xlPasteAll 
     Application.CutCopyMode = False 
     CurrentSheet.Rows(9).EntireRow.Delete 
     CurrentSheet.Rows(9).Insert Shift:=xlDown 
    Next CurrentSheet 
End Sub 
+0

Großartig! Vielen Dank, das hat funktioniert! Jetzt, bevor ich die Zeilen hinzufügen, möchte ich auch A10 bis AE10 löschen. – Adrenalist

+0

& nach dem Hinzufügen dieser Zeilen möchte ich dann Zeile A9 löschen. Sollte einfach sein, ich kenne nicht den VBA-Code. – Adrenalist

+0

löschen "Zeile" 'A9' oder Zelle' A9'? – PartyHatPanda