Как создать листы в книге,имена которых брались бы из ячеек этой же книги?Список имен храниться в ячейках и может изменяться(увеличиваться/уменьшаться). Очень нужна помощь.
Как создать листы в книге,имена которых брались бы из ячеек этой же книги?Список имен храниться в ячейках и может изменяться(увеличиваться/уменьшаться). Очень нужна помощь.Uliana
Что макросом, понятно. По его содержанию вопросы.В примерах по ссылке,к сожалению,нужного нет. Там цикл for получается будет двойным, один-по листам, другой-по ячейкам. Так?
Что макросом, понятно. По его содержанию вопросы.В примерах по ссылке,к сожалению,нужного нет. Там цикл for получается будет двойным, один-по листам, другой-по ячейкам. Так?Uliana
Uliana, одного цикла и одного условия достаточно. Бежим по ячейкам циклом for или while, и проверяем, если такой лист в книге. Если нет -> создаём, если есть -> следующая ячейка.
Uliana, одного цикла и одного условия достаточно. Бежим по ячейкам циклом for или while, и проверяем, если такой лист в книге. Если нет -> создаём, если есть -> следующая ячейка.Матраскин
в интернете опять кто-то не прав
Сообщение отредактировал Матраскин - Пятница, 22.03.2013, 09:22
Uliana, единственная проблема, имена из одних цифр. Они что-то выпендриваются. У вас будут имена из них??? P.s. начал делать макрос и вспомнил о своём посте выше, как же...
Uliana, единственная проблема, имена из одних цифр. Они что-то выпендриваются. У вас будут имена из них??? P.s. начал делать макрос и вспомнил о своём посте выше, как же... Матраскин
Имена представляют собой ФИО студентов,цифры вряд ли появятся вообще. Вобщем,если конкретнее,смысл таков. Имеется список студентов,имеется кнопочка типа "создать листы",после нажатия на которую появятся листы, имена и количество которых будет соответствовать списку студентов. Пока список фиксирован, о динамике (удаление или добавление студента, а соответственно и листа) речи пока не идет.
Имена представляют собой ФИО студентов,цифры вряд ли появятся вообще. Вобщем,если конкретнее,смысл таков. Имеется список студентов,имеется кнопочка типа "создать листы",после нажатия на которую появятся листы, имена и количество которых будет соответствовать списку студентов. Пока список фиксирован, о динамике (удаление или добавление студента, а соответственно и листа) речи пока не идет.Uliana
Sub Macros() Application.ScreenUpdating = False Dim i As Long For i = 1 To Sheets("1").Columns(1).End(xlDown).Row On Error Resume Next Sheets(Range("A" & i)).Select If Err Then Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = Sheets("1").Range("A" & i) End If Next i Worksheets("1").Activate Application.ScreenUpdating = True End Sub
[/vba]
А если код покороче [vba]
Код
Sub Macros() Application.ScreenUpdating = False Dim i As Long For i = 1 To Sheets("1").Columns(1).End(xlDown).Row On Error Resume Next Sheets(Range("A" & i)).Select If Err Then Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = Sheets("1").Range("A" & i) End If Next i Worksheets("1").Activate Application.ScreenUpdating = True End Sub
AlexM, короче но не лучше, надо доделать. 1.если ничего не добавлять в столбец и жать на кнопку будут добавляться просто дефолтные листы в кол-ве записей в столбце...зачем они 2.если нет данных в столбце вообще, то макрос зацикливается 3. интересно, что если добавить в столбец имя из 1 буквы то тоже всё зацикливается
AlexM, короче но не лучше, надо доделать. 1.если ничего не добавлять в столбец и жать на кнопку будут добавляться просто дефолтные листы в кол-ве записей в столбце...зачем они 2.если нет данных в столбце вообще, то макрос зацикливается 3. интересно, что если добавить в столбец имя из 1 буквы то тоже всё зацикливаетсяМатраскин
[offtop]Ребята, ну сколько можно нарушителям правил помогать? Ведь Серж же вполне ясно в своём ответе намекнул, что пока не будет примера, будут только ответы общего плана. Я тоже утром посмотрел и решил подождать реакции топик-стартера... А вы вдруг взялись играть в "угадайку", не зная ни структуры таблиц, ни названий листов... Ну, флаг вам в руки. Гадайте дальше.[/offtop]
[offtop]Ребята, ну сколько можно нарушителям правил помогать? Ведь Серж же вполне ясно в своём ответе намекнул, что пока не будет примера, будут только ответы общего плана. Я тоже утром посмотрел и решил подождать реакции топик-стартера... А вы вдруг взялись играть в "угадайку", не зная ни структуры таблиц, ни названий листов... Ну, флаг вам в руки. Гадайте дальше.[/offtop]Alex_ST
Спасибо за замечание. Код поправил. Вроде нет описанных глюков. [vba]
Код
Sub Macros() Application.ScreenUpdating = False Dim i As Long For i = 1 To Sheets("1").Range("A" & Rows.Count).End(xlUp).Row On Error Resume Next Sheets(Sheets("1").Range("A" & i).Value).Select If Err And Sheets("1").Range("A" & i) <> "" Then Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = Sheets("1").Range("A" & i) End If Next i Worksheets("1").Activate Application.ScreenUpdating = True End Sub
[/vba]
Цитата (Матраскин)
короче но не лучше, надо доделать
Спасибо за замечание. Код поправил. Вроде нет описанных глюков. [vba]
Код
Sub Macros() Application.ScreenUpdating = False Dim i As Long For i = 1 To Sheets("1").Range("A" & Rows.Count).End(xlUp).Row On Error Resume Next Sheets(Sheets("1").Range("A" & i).Value).Select If Err And Sheets("1").Range("A" & i) <> "" Then Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = Sheets("1").Range("A" & i) End If Next i Worksheets("1").Activate Application.ScreenUpdating = True End Sub
Форумчане, подскажите, пожалуйста, код макроса, который также создает листы с именами из списка, но по шаблону. Есть лист "ФИО" и лист "Шаблон". Макрос должен создать листы с именами из диапазона (стобец А) на листе "ФИО", причем все созданные листы должны содержать данные из листа "Шаблон". пример прикрепляю. сгенерироваться должны листы, обозначенные зелеными ярлыками.
Форумчане, подскажите, пожалуйста, код макроса, который также создает листы с именами из списка, но по шаблону. Есть лист "ФИО" и лист "Шаблон". Макрос должен создать листы с именами из диапазона (стобец А) на листе "ФИО", причем все созданные листы должны содержать данные из листа "Шаблон". пример прикрепляю. сгенерироваться должны листы, обозначенные зелеными ярлыками.aphome
Sub Macros() Application.ScreenUpdating = False Dim i As Long For i = 1 To Sheets("ФИО").Range("A" & Rows.Count).End(xlUp).Row On Error Resume Next Sheets(Sheets("ФИО").Range("A" & i).Value).Select If Err And Sheets("ФИО").Range("A" & i) <> "" Then 'Sheets.Add After:=Sheets(Sheets.Count) Sheets("Шаблон").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = Sheets("ФИО").Range("A" & i) End If Next i Worksheets("ФИО").Activate Application.ScreenUpdating = True End Sub
[/vba]
Вместо добавления листа используйте копирование
[vba]
Код
Sub Macros() Application.ScreenUpdating = False Dim i As Long For i = 1 To Sheets("ФИО").Range("A" & Rows.Count).End(xlUp).Row On Error Resume Next Sheets(Sheets("ФИО").Range("A" & i).Value).Select If Err And Sheets("ФИО").Range("A" & i) <> "" Then 'Sheets.Add After:=Sheets(Sheets.Count) Sheets("Шаблон").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = Sheets("ФИО").Range("A" & i) End If Next i Worksheets("ФИО").Activate Application.ScreenUpdating = True End Sub
Sub Macros() Application.ScreenUpdating = False Dim i As Long For i = 1 To Sheets("ФИО").Range("A" & Rows.Count).End(xlUp).Row On Error Resume Next Sheets(Sheets("ФИО").Range("A" & i).Value).Select If Err And Sheets("ФИО").Range("A" & i) <> "" Then 'Sheets.Add After:=Sheets(Sheets.Count) Sheets("Шаблон").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = Sheets("ФИО").Range("A" & i) End If Next i Worksheets("ФИО").Activate Application.ScreenUpdating = True End Sub
А как теперь создать гиперссылки на эти листы. Какую команду прописать? Чтоб при нажатии на листе "ФИО" на определенную ячейку, автоматически переходило на одноименный лист.
Sub Macros() Application.ScreenUpdating = False Dim i As Long For i = 1 To Sheets("ФИО").Range("A" & Rows.Count).End(xlUp).Row On Error Resume Next Sheets(Sheets("ФИО").Range("A" & i).Value).Select If Err And Sheets("ФИО").Range("A" & i) <> "" Then 'Sheets.Add After:=Sheets(Sheets.Count) Sheets("Шаблон").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = Sheets("ФИО").Range("A" & i) End If Next i Worksheets("ФИО").Activate Application.ScreenUpdating = True End Sub
А как теперь создать гиперссылки на эти листы. Какую команду прописать? Чтоб при нажатии на листе "ФИО" на определенную ячейку, автоматически переходило на одноименный лист.malll