Страницы: 1
RSS
Макрос выбора имени листа из диалогового окна, диалоговое окно с выбором имени или переименование по заданному шаблону
 
Добрый день! Помогите, пожалуйста, создать макрос.

Нужно дать новое название каждому листу книги.
Пример, если лист книги имеет Имя "Лист1" или "Sheet 1", то назовем его "Spisok", если Имя "Лист 2" или "Sheet 2", то назовем его "Data".
Процедура выполняется до конца переименования всех листов книги (не более 10 листов).

Идеальный вариант макроса - диалоговое окно со списоком имен, в котором можно выбрать как назвать определенный лист. Тогда запускать макрос можно с конкретного листа.
В макросе нельзя использовать связки с другими файлами и ссылаться на ячейки книги!

Спасибо!
 
См. вариант без каких-либо проверок.
 
Юрий М, хороший вариант, но надо вводить название каждого листа вручную, к сожалению, это не быстрее топорного варианта по переименованию каждого листа вручную с помощью мышки и клавиатуры.
 
Цитата
Macedon написал: но надо вводить название каждого листа вручную
А как макрос должен понять, какое имя, какому листу присвоить? И зачем тогда просили диалоговое окно, если вводить ничего не нужно?
 
Macedon, соберите одним макросом все имена листов на отдельном рабочем листе. Напротив старых имён укажите новые. Другим макросом пройдитесь по списку с переименованием. Ручной работы всё одно не избежать.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
Юрий М написал: И зачем тогда просили диалоговое окно, если вводить ничего не нужно?
В диалоговом окне, я полагаю можно выбирать имя из заданных пользователем (вшитых в макрос) и подтверждать выбор.

А так макрос, по моему мнению, должен осуществлять проверку имени и менять его по условию (Если Sheet 1, то Spisok, если Sheet 2, то Data)
 
Цитата
Macedon написал: В диалоговом окне, я полагаю можно выбирать имя из заданных пользователем (вшитых в макрос)
Так покажите в файле этот список.
Цитата
Если Sheet 1, то Spisok, если Sheet 2, то Data
А дальше как? Если менять ПО УСЛОВИЮ, то опять: зачем диалоговое окно?
 
Вот вариант без диалогового окна. Хотя, в названии темы просите именно диалог...
Код
Sub Macro2()
Dim n As Long
    For n = 1 To Sheets.Count
        Select Case (Sheets(n).Name)
            Case "Лист1": Sheets(n).Name = "Spisok"
            Case "Лист2": Sheets(n).Name = "Data"
            '''''Дальше по аналогии
        End Select
    Next
End Sub
 
Цитата
Юрий М написал: А дальше как? Если менять ПО УСЛОВИЮ, то опять: зачем диалоговое окно?
Дальше все, процедура закончена. Я просто думал, что как у Николая Павлова в Plex календарь сделан, выбираем дату и в ячейке она прописывается. Там есть диалоговое окно с выбором месяца. А мне процедура нужна по сути та же, но с названием листа.

P.S. Я описал варианты, как нужно сделать:
1) Диалоговое окно с выбором нового названия листа;
2) Макрос без диалогового окна.
Список:
Sheet 1 или Лист1 заменяем Spisok;
Sheet 2 или Лист2 заменяем Data;
Sheet 3 или Лист3 заменяем Graph
 
JayBhagavan, это решение через ячейки - не подходит. У меня 5 файлов сводимых в один с одинаковыми именами листов. Мне нужно их переименовать до копирования в основной файл, в котором не нужны лишние технические листы.
 
Без диалога я вариант показал (см. # 8 ). Если делать с диалогом, то придётся исключать УЖЕ выбранные позиции. См. раздел "Приемы", Выпадающие списки - Выпадающий список с удалением использованных элементов
 
Цитата
Macedon написал: Дальше все, процедура закончена
Я спрашивал, какие соответствия дальше ))
 
Юрий М, JayBhagavan, спасибо за помощь! Ваши советы и решения мне помогли. Воспользовался 2 кодом от Юрий М.
Страницы: 1
Наверх