2015-06-26 4 views
2

Fellow VBA Волшебников,Macro Копирование одного листа на несколько листов с динамическим диапазоном

Используя следующий код, я был в состоянии генерировать несколько листов с названиями вкладок, равных динамический диапазон:

Sub SheetMacro() 
    Dim MyCell As Range, MyRange As Range 

    Set MyRange = Sheets("Control_Sheet").Range("F7") 
    Set MyRange = Range(MyRange, MyRange.End(xlDown)) 

    For Each MyCell In MyRange 
     Sheets.Add After:=Sheets(Sheets.Count) 'creates a new worksheet 
     Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet 
    Next MyCell 
End Sub 

Я пытаюсь скопировать исходный шаблон w/formula (сводка EAC) во все недавно созданные листы. Добавление этого кода дублирует Резюме EAC, но не называют вкладки в пределах динамического диапазона:

Sub SheetMacro() 
    Dim MyCell As Range, MyRange As Range 
    Dim ws1 As Worksheet 

    Set MyRange = Sheets("Control_Sheet").Range("F7") 
    Set MyRange = Range(MyRange, MyRange.End(xlDown)) 

    For Each MyCell In MyRange 
     Sheets.Add After:=Sheets(Sheets.Count) 'creates a new worksheet 
     Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet 

     Set ws1 = ThisWorkbook.Worksheets("EAC Summary") 
     ws1.Copy ThisWorkbook.Sheets(Sheets.Count) 

    Next MyCell 

End Sub 

Существует ли оптимальный способ совместить код таким образом, чтобы повторить шаблон источника, и назовите вкладки в соответствии с входами в динамическом диапазоне?

Заранее спасибо.

+0

Вы пытаетесь скопировать 'EAC Summary', а затем переименовать его? Если это так, вы должны сделать шаг переименования после шага «Копировать». Если это не цель, пожалуйста, уточните свой вопрос. –

+0

Спасибо. Этот код заменяет имя Summary Tab EAC с первой ячейки в диапазоне, но ошибки кода, потому что вкладка EAC переименовывается: Sub SheetMacro2() Dim MyCell As Range, MyRange Как Range Dim WS1 как рабочий лист Установите MyRange = Sheets ("Control_Sheet"). Range ("F7") Set MyRange = Range (MyRange, MyRange.End (xlDown)) Для каждого MyCell В MyRange Set WS1 = ThisWorkbook.Worksheets ("EAC Резюме ") ws1.Copy ThisWorkbook.Sheets (Sheets.Count) Листы (таблицы.) .Name = MyCell.Value 'переименовывает новый лист Next My Cell End Sub –

+0

Есть ли у вас какие-либо мысли о том, как предотвратить перекодирование кода на исходное имя вкладки EAC Template? –

ответ

0

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

Sub SheetMacro3() 
Dim MyCell As Range, MyRange As Range 

Set MyRange = Sheets("Control_Sheet").Range("F7") 
Set MyRange = Range(MyRange, MyRange.End(xlDown)) 
Sheets("EAC Summary").Visible = True 'displays master template 
For Each MyCell In MyRange 

    Sheets("EAC Summary").Copy After:=Worksheets(Worksheets.Count) 
    Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet 
Next MyCell 
Sheets("EAC Summary").Visible = False 'hides master template 
End Sub