Страницы: 1
RSS
Копирование листа из шаблона с названием по номеру по порядку
 
Здравствуйте помогите мне пожалуйста с написанием макроса. Есть книга с листами "Номер", "Инф", "Дан". На листе "Номер", когда встаешь в столбец "A" (в нем у меня находятся номера по порядку), в ячейку "A3", нужен такой макрос, который бы копировал лист "Шаблон", и переименовывал бы его на номер по порядку и т.д. в низ по таблице. Важно чтобы если номер по порядку по меняется, то и название листа менялось бы
 
Попробуйте так, код в модуль листа "Номер"
Код
Sub ListNomer()
Dim i As Long
Dim iLastRow As Long
    iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 3 To iLastRow
      If Cells(i, 1).MergeCells Then
        Worksheets("Шаблон").Copy After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = Cells(i, 1)
            i = i + Cells(i, 1).MergeArea.Count - 1
      Else
        Worksheets("Шаблон").Copy After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = Cells(i, 1)
      End If
    Next
End Sub
 
Спасибо, вроде подошло. А как сделать, так чтобы в скопированных листах в ячейки "B1" отображался номер по порядку, желательно через формулу например ячейка "B1"=Номер!A3, "B1"=Номер!A40 и т.д. У меня в модуле листа "шаблон", есть код который называет лист по данным ячейки.
 
после ActiveSheet.Name
Код
ActiveSheet.Range("B2").FormulaLocal = "=Номер!$A$" & i
Изменено: V - 25.02.2015 18:38:35
 
Помогло, но не совсем. Возникла другая проблема, когда на лист "Номер", я меняю номер по порядку то название листа не меняется, приходится заходить в нужный лист, и двойным щелчком кликать по ячейки "B1", только тогда меняется название листа, автоматически можно как-то сделать? А кроме этого все нормально работает.
 
Цитата
Djoni написал: ....двойным щелчком кликать по ячейки "B1",
у вас случаем автопересчет формул не отключен?
 
Автопересчет формул не отключен. Попробуйте поменять в моем примере на листе " Номер", номер по порядку, то название листа не поменяется, нужно например будет перейти на лист "1", дважды щелкнуть по ячейки "B1", тогда поменяется.
 
Djoni ваш код в модуле листа "Шаблон" в данном случае не поможет, он не отслеживает изменения в формулах.
 
И как быть?
 
как вариант при вставке листов вставлять в лист значение в некую ячейку (цвет шрифта сделать белым чтобы не было видно)
в модуле листа использовать Private Sub Worksheet_Calculate() с алгоритмом:
если наша ячейка <>[B1] то проверяем наличие листа с новым именем, если такого нет то переименовываем.
Или делать событие на изменения на листе НОМЕР.
 
Цитата
V написал:
как вариант при вставке листов вставлять в лист значение в некую ячейку (цвет шрифта сделать белым чтобы не было видно)
в модуле листа использовать Private Sub Worksheet_Calculate() с алгоритмом:
если наша ячейка <>[B1] то проверяем наличие листа с новым именем, если такого нет то переименовываем.
Или делать событие на изменения на листе НОМЕР.
Извините, не могли бы Вы мне помочь с этим кодом, я просто в этом не силен, поэтому и не знаю, что дальше делать, если не сложно.
 
моих знаний хватило на это (в модуль листа "Номер")
Сам Код

проверяйте, на черновике.
Изменено: V - 26.02.2015 17:02:29
 
Я вставил код в модуль листа "Номер", ни чего не происходит. Ввел цифру в столбец с номером по порядку, выдает "Лист с именем 8 существует", "Лист с именем Пример существует", Я что-то не то делаю?
 
Цитата
Djoni написал: Я вставил код в модуль листа "Номер", ни чего не происходит.
а что вы хотели чтобы произошло?
макрос срабатывает при изменении значений в диапазоне "A3:A150", проходится по листам (кроме  "Номер", "Инф", "Дан", "Должность", "Шаблон") и сверяет имя листа с значением ячейки В1 на этом листе, если не сходится то считает что номер изменен и меняет имя листа согласно ячейки. Но при замене если лист с таким именем уже существует выскочит ошибка, при ошибке макрос сообщает вам что лист существует, возвращает старое значение в измененную ячейку листа Номер и заканчивает работу кода.
 
Djoni, для чего жали кнопку цитирования при создании сообщения №11? Условный рефлекс?
Прошу исправить.
Страницы: 1
Наверх