2016-10-24 3 views
0

У меня есть таблица, в которой мне нужно добавить X количество строк. Код ниже - это то, что у меня есть. Мне нужно изменить этот макрос каждый раз, когда мне нужно другое количество строк.Как повторить код на основе числа в ячейке в Excel?

Мне было интересно, могу ли я написать этот макрос, чтобы он произвел X количество строк, где X - номер, который пользователь помещает в ячейку A1.

Итак, какой код я могу использовать для чтения ячейки A1? Затем, как я могу закорачивать свой код, чтобы постоянно добавлять строку в A10 X раз.

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

Кроме того, есть способ переписать этот код таким образом, что, когда он добавляет новую строку, он также приносит копию вниз все клетки из B9 через Z9?

EDITED раствором ----

Так благодаря всей вашей помощи, вот код, теперь у меня есть. Тем не менее, мне нужно сделать это примерно до 50 000 строк, и кажется, что этот код работает по строкам. Любые предложения о том, как улучшить это?

Возможно, ему нужно добавить все строки, а затем сделать одну копию формулы?

обновлена ​​формула:

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

Я предполагаю, что я оставляю добавить строки в 'For I' цикла. Затем, после того, как все строки были добавлены, как я могу скопировать из A10 в (A10 + X - 1 строки)?

+0

взгляд на usedrange и заполнить вниз –

+0

Вы можете добавить 'InputBox', чтобы получить число. http://www.exceltrick.com/formulas_macros/vba-inputbox/ –

ответ

0

Если я понимаю ваш вопрос, вы хотите проверить значение A1 на каждом листе и добавить много строк? Возьмите небольшую модификацию кода:

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

Отлично! Большое вам спасибо, это сработало! Теперь, прежде чем добавлять строки, я хочу, чтобы он также очистил A10 до AE10. – Adrenalist

+0

& после добавления этих строк я хочу удалить строку A9. Должно быть легко, я просто не знаю код VBA. – Adrenalist

+0

удалить «Строка» 'A9' или ячейку' A9'? – PartyHatPanda

Смежные вопросы