Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
3 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 34
Excel

Переименовка листов по CodeName

05.06.2020, 14:25. Показов 3857. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Подскажите как сделать что бы листы переименовывались по CodeName?
List1 Исходник, данные с таблицы, ниже код который по порядку меняет и если передвинуть страницу, то и имя листа изменится.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh As Long
If Not Intersect(Range("M2:M32"), Target) Is Nothing Then
    For Each iCell In Target
        Select Case iCell.Address(0, 0)
            Case "M2": sh = 3
            Case "M3": sh = 4
            Case "M4": sh = 5
            Case "M5": sh = 6
            Case "M6": sh = 7
            Case "M7": sh = 8
            Case "M8": sh = 9
            Case "M9": sh = 10
            Case "M10": sh = 11
            Case "M11": sh = 12
            Case "M12": sh = 13
            Case "M13": sh = 14
            Case "M14": sh = 15
            Case "M15": sh = 16
            Case "M16": sh = 17
        End Select
        Sheets(sh).Name = IIf(iCell <> "", iCell.Value, WorksheetFunction.Rept(" ", sh))
    Next
End If
End Sub
Добавлено через 11 минут
Или может есть макрос для книги что бы запрещало двигать листы?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.06.2020, 14:25
Ответы с готовыми решениями:

Excel обращение к книге по codename
Даров, ребя. Можно ли напрямки обраться по коднейму к определённой книге из другой? А то название файла поменяют, и код не...

Определить, сколько можно купить тетрадей по 12 листов, по 48 листов и по 96 листов, зная цену
Определить, сколько можно купить тетрадей по 12 листов, по 48 листов и по 96 листов, если цена тетради с 96 листами 60 р., с 48 листами –...

переименовка файла
здраствуйте на форме 2 компонента edit и button нужно ввести в эдите слово и нажать батн чтоб файл переименовался с именем которое...

51
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
06.06.2020, 07:42
Студворк — интернет-сервис помощи студентам
FullFlashka, И ещё альтернативный вариант. Там ячейки лишь рудимент, более грамотно было бы отобрать собственную форму. Где пользователь будет видеть имена листов, сможет выбрать нужный, ввести новое имя листа, где ему изначально будет запрещено вводить недопустимые символы, будет осуществлён контроль количества символов (не более 31) и, наконец, будет проверка имени на уникальность. Но в примере всё проще.
Вложения
Тип файла: zip Sample_for_FullFlashka3.zip (21.6 Кб, 2 просмотров)
1
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
06.06.2020, 09:13
И заодно в форме можно запретить ввод запрещённых имён (но это зависит от версии, например точно не получится назвать именем "журнал" или "journal", а может и ещё какие есть, не помню). И например можно будет назвать лист "Журавлёв", что не факт что получится сделать ручками
1
Наивное Существо
 Аватар для vedunasv
666 / 141 / 27
Регистрация: 09.05.2020
Сообщений: 750
Записей в блоге: 15
06.06.2020, 09:27
Hugo121, Да это просто обходится с такими названиями - поставить любой символ-например точку или пробел "журнал ", " журнал", "журнал.", "журнал_" - и задача решена
0
Наивное Существо
 Аватар для vedunasv
666 / 141 / 27
Регистрация: 09.05.2020
Сообщений: 750
Записей в блоге: 15
06.06.2020, 09:46
FullFlashka, типа такой формы

Миниатюры
Переименовка листов по CodeName  
0
3 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 34
06.06.2020, 19:14  [ТС]
pashulka, Sample_for_FullFlashka2.zip Прям супер, но переношу код в свою книгу и мне пишет ошибку.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Workbook_Open()
  Dim wsSh As Object
    For Each wsSh In Me.Sheets
        Protect_for_User_Non_for_VBA wsSh
    Next wsSh
End Sub
Sub Protect_for_User_Non_for_VBA(wsSh As Worksheet)
    wsSh.Protect Password:="0098", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering _
        :=True, UserInterfaceOnly:=True
End Sub
'https://www.cyberforum.ru/vba/thread2661698.html
Private Sub Workbook_Open()
If Me.ActiveSheet Is List1 Then List1.Worksheet_Activate
End Sub
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
06.06.2020, 20:15
Visual Basic
1
2
3
4
5
6
7
8
9
'https://www.cyberforum.ru/vba/thread2661698.html
 
Private Sub Workbook_Open()
    Dim wsSh As Worksheet
    For Each wsSh In Me.Worksheets
          wsSh.Protect "0098", True, True, True, True, , True, True, AllowFiltering:=True
    Next wsSh
    If Me.ActiveSheet Is List1 Then List1.Worksheet_Activate
End Sub
Если перепутал передачу аргументов по позиции, то можно вернуть старый вариант.
1
3 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 34
07.06.2020, 01:40  [ТС]
pashulka, Где то я косячнул, можешь глянуть в файле?
https://yadi.sk/d/BIE8nFfmC6hXnw
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
07.06.2020, 08:15
FullFlashka, Во-первых, не нужно заниматься отсебятиной, тот код, что наличествует в посте #46 править не нужно. Максимум, это можно скопировать из старого примера метод Protect

Во -вторых,
Visual Basic
1
iRow = iCell.Row - 0
вычитать 0 не имеет смысла. Тем более, что вычитать нужно 2, т.к. это количество строк от 1 до Range("C3").Row

В-третьих, файле нет списка имён листов, а без них это всё туфта. У меня в примере наличествует изменение имени листа со старого на новое. Нет правильного имени листа, значит и переименования. Конечно можно отбрасывать инициалы, но этого в примере-файле тоже нет.


P.S. Если изначально запретить изменение более чем в одной ячейке, то все сведётся к старому варианту. Т.е. если новое имя листа указано правильно, то всё ок и вери гуд, если неправильно, то отменять одно единственное действие пользователя. А для этого не нужен массив старых имён, достаточно просто написать Application.Undo
1
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
07.06.2020, 09:16
Лучший ответ Сообщение было отмечено FullFlashka как решение

Решение

Вот переименование листов по индексу.
Вложения
Тип файла: zip Sample_for_FullFlashka4.zip (27.6 Кб, 8 просмотров)
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
07.06.2020, 12:05
Если отбрасывать инициалы - то думаю нужно к фамилии добавлять ну хоть номер строки... хотя и с инициалами тоже. Потому что это фамилии! А не уникальные индексы.
1
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
07.06.2020, 12:32
Hugo121, Если отбрасывать в имени листа инициалы, то ничего добавлять не нужно, т.к. перемещать листы пользователь не сможет, добавлять/удалять строки тоже. Поэтому у меня в примере индекс листа = номер строки. Но будут проблемы с однофамильцами, поэтому, у меня в примере инициалы не отбрасываются.
А вот с полными тёзками, да, нужно добавлять дополнительную информацию.


Но если говорить о возможных совпадениях, включая даже инициалы, то можно вспомнить, что нас уже давно всех, как скот, пометили и пронумеровали, поэтому именем листа может быть уникальный идентификатор, типа ИНН. Т.е. в таблице будет два столбца , 1) ФИО 2) ИНН. Переход по листам с помощью выбора именно ФИО, а имена листов можно вообще скрыть.
Но есть подозрение, что полного ФИО может быть достаточно, т.к. Excel не предназначен для создания тысячи и миллионов листов в одной книге.
1
Наивное Существо
 Аватар для vedunasv
666 / 141 / 27
Регистрация: 09.05.2020
Сообщений: 750
Записей в блоге: 15
07.06.2020, 22:44
pashulka, но можно подсказать челу, что можно данные хранить во внешнем файл (создать свою внешнюю БД) - раз всё равно создаётся прога, или обращаться к специализированным хранилищам БД - SQL и т.д. (благо эксель это умеет).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.06.2020, 22:44

Переименовка файлов
Добрый день, давно не обращался за помощью ) в прошлый раз очень помогли.( за это отдельное спасибо) и так к сути. Есть 100+ папок . В...

Переименовка dpr
Привет=) Я очень торопился и сохранил проект не изменив имя. Вопрос: как можно изменить имя проекта? Запускаю &quot;Диспетчер...

Codename: n/a
Всем привет! При попытке установить phalcon на сервер и выполнении вот этой команды:curl -s...

Как конверт jar (codename one) в .apk, xapp . формат ?
Как конверт jar (codename one) в .apk, xapp .... формат ????

Работа со StringGrid. Выдать список листов за дату, список листов с протяженностью более заданной...
Здравствуйте! Помогите доработать. Программа должна выдавать список листов за дату, список листов с протяженностью более заданной,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
52
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru