2015-08-07 3 views
0

Я вернулся с другим вопросом, который, вероятно, имеет простой ответ. Я действительно падаю, когда дело доходит до циклов, так что это то, что я пытаюсь построить.Вставить шаблон с петлей x Количество раз

Я создаю форму, в которой пользователь вводит число от 1 до 156 (именованный диапазон «GenNo») и нажмите кнопку «Создать».

мне нужен цикл, который будет копировать шаблон, построенный на вкладке «Шаблон» из таблицы с именованный диапазон также является «шаблон», а затем вставить его в основной форме страницы определенное количество раз. Таким образом, остальная часть содержимого и другие именованные диапазоны должны быть соответственно сдвинуты вниз.

Возможно, это очень простой ответ, но я ужасен, когда дело доходит до циклов, и не знал, с чего начать.

Благодарим за помощь.

EDIT: Эта попытка генерирует только один шаблон в виде:

Sub Generate() 
    ' Check if payslips are already generated 
    If Sheets("Data").Range("GenLogic").Value = 1 Then 
    MsgBox ("Already Generated! Please clear the form and regenerate.") 
    Else 
    Sheets("Data").Range("GenLogic").Value = 1 
    End If 
    ' Loop code 
     Do Until Sheets("Data").Range("LoopLogic").Value = Range("GenNo").Value 
     Sheets("Template").Range("Template").Copy 
     Sheets("Overpayment Form").Range("Start").Insert 
     Range("LoopLogic") = Cell.Value + 1 
     Loop 

End Sub 
+0

Пожалуйста, покажите нам, что вы пробовали до сих пор –

+0

я отредактировал мой оригинальный пост с моей попыткой. Благодарю. – JaayB

+0

Стоит отметить: вы сообщаете пользователю, что ему нужно очистить форму и восстановить, но вы не проверяете, чтобы это было сделано до продолжения. Вы можете добавить оператор 'exit sub' после предложения first if. – CBRF23

ответ

0

Я хотел бы дать этому выстрел; обратите внимание, что я удалил обновление ваших переменных цикла. Кроме того, я переписал ваш цикл, чтобы использовать for, и сдвиг вниз вставить.

Sub Generate() 
' Check if payslips are already generated 
If Sheets("Data").Range("GenLogic").Value = 1 Then 
MsgBox ("Already Generated! Please clear the form and regenerate.") 
Else 
Sheets("Data").Range("GenLogic").Value = 1 
End If 
' Loop code 
Dim iFrom As Long, iTo As Long, i As Long 
iFrom = Sheets("Data").Range("LoopLogic").Value 
iTo = Range("GenNo").Value 
For i = iFrom To iTo 
    Sheets("Template").Range("Template").Copy 
    Sheets("Overpayment Form").Range("Start").Insert Shift:=xlDown 
Next 


End Sub 

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

  • Нет связанных вопросов^_^