Добрый день! Помогите написать макрос, который бы создавал новый лист для каждой специальности из файла "Стоимость обучения", и в каждом новом листе ссылки в формулах, отмеченных желтым цветом в файле "ВПО", спускались бы на 1 (одну) позицию вниз. Все остальные формулы рассчитываются автоматически. Шаблон для первой специальности я создал. Названия листов можно именовать просто 1,2,3. Я потом переименую сам кратко.
Добрый день! Помогите написать макрос, который бы создавал новый лист для каждой специальности из файла "Стоимость обучения", и в каждом новом листе ссылки в формулах, отмеченных желтым цветом в файле "ВПО", спускались бы на 1 (одну) позицию вниз. Все остальные формулы рассчитываются автоматически. Шаблон для первой специальности я создал. Названия листов можно именовать просто 1,2,3. Я потом переименую сам кратко.Мурад
For I = 1 To 131 On Error Resume Next ThisWorkbook.Sheets(I).Activate ThisWorkbook.Worksheets.Add.Name = I + 1 ThisWorkbook.Sheets(I + 1).Activate Range("B11").Select ActiveCell.FormulaLocal = ???
[/vba]
Может быть так? вот только как вставить после равно формулу
For I = 1 To 131 On Error Resume Next ThisWorkbook.Sheets(I).Activate ThisWorkbook.Worksheets.Add.Name = I + 1 ThisWorkbook.Sheets(I + 1).Activate Range("B11").Select ActiveCell.FormulaLocal = ???
[/vba]
Может быть так? вот только как вставить после равно формулу
Создал код, но все операции он проводит на одном листе. Новые листы не создает... [vba]
Код
Sub Spec() Dim I As Integer For I = 1 To 131 On Error Resume Next ThisWorkbook.Sheets("I").Activate Range("B6").Select ActiveCell.Value = I + 1 ThisWorkbook.Worksheets.Add.Name = I + 1 Next End Sub
[/vba]
Создал код, но все операции он проводит на одном листе. Новые листы не создает... [vba]
Код
Sub Spec() Dim I As Integer For I = 1 To 131 On Error Resume Next ThisWorkbook.Sheets("I").Activate Range("B6").Select ActiveCell.Value = I + 1 ThisWorkbook.Worksheets.Add.Name = I + 1 Next End Sub
Sub Spec() Dim i As Integer For i = 1 To 8 If Not Evaluate("ISREF('" & i & "'!A1)") Then Sheets.Add(after:=Sheets(Sheets.Count)).Name = i Else Sheets(CStr(i)).Activate End If Range("B6").Value = i + 1 Next End Sub
[/vba]
Мурад, привет попробуйте так [vba]
Код
Sub Spec() Dim i As Integer For i = 1 To 8 If Not Evaluate("ISREF('" & i & "'!A1)") Then Sheets.Add(after:=Sheets(Sheets.Count)).Name = i Else Sheets(CStr(i)).Activate End If Range("B6").Value = i + 1 Next End Sub
nilem, привет! Спасибо, все работает. Листы создаются по возрастанию. Правда я внес небольшие корректировки. Вначале создал макросом 132 пустых листа. Затем скопировал вручную весь первый лист, сгруппировал все 132 листа, вставил содержимое шаблона во все остальные листы. Затем снова запустил макрос, в котором лишь автоматически проставлялась нумерация 1, 2, ...., 132 в каждый лист в ячейку B6. Формулы автоматически подхватили эту цифру в виде ссылки ДВссыл(...) и ... вуаля)
nilem, привет! Спасибо, все работает. Листы создаются по возрастанию. Правда я внес небольшие корректировки. Вначале создал макросом 132 пустых листа. Затем скопировал вручную весь первый лист, сгруппировал все 132 листа, вставил содержимое шаблона во все остальные листы. Затем снова запустил макрос, в котором лишь автоматически проставлялась нумерация 1, 2, ...., 132 в каждый лист в ячейку B6. Формулы автоматически подхватили эту цифру в виде ссылки ДВссыл(...) и ... вуаля)Мурад