В этом руководстве будет рассмотрено взаимодействие с именами листов в VBA.
Получить имя листа
Имена листов хранятся в Имя собственность Таблицы или Рабочие листы объект. Имя листа - это имя «вкладки», которое отображается в нижней части Excel:
Получить имя ActiveSheet
Это отобразит имя ActiveSheet в окне сообщения:
1 | MsgBox ActiveSheet.Name |
Получить имя листа по номеру индекса
Это отобразит имя первого рабочего листа в окне сообщения:
1 | MsgBox Sheets (1) .Name |
Это отобразит имя последнего рабочего листа в книге:
1 | MsgBox Sheets (Sheets.Count) .Name |
Получить имя листа по кодовому имени
В редакторе VBA есть возможность изменить «кодовое имя» листа. Кодовое имя не отображается для пользователя Excel и его можно увидеть только в редакторе VBA:
В VBA при работе с таблицами вы можете ссылаться на обычное имя вкладки:
1 | Таблицы ("TabName"). Активировать |
или кодовое имя VBA:
1 | CodeName.Activate |
Ссылка на кодовое имя желательно в случае, если имя вкладки «Лист» когда-либо изменится. Если вы разрешаете пользователю Excel изменять имена листов, вам следует указать кодовое имя в коде VBA, чтобы несоответствие имени вкладки листа не приводило к ошибке. Кодовые названия листов обсуждаются здесь более подробно.
Чтобы получить имя листа с использованием имени кода VBA, выполните следующие действия:
1 | MsgBox CodeName.Name |
Переименовать лист
Вы можете переименовать Таблицы, настроив имя собственность Таблицы или Рабочие листы объект.
Переименовать ActiveSheet
1 | ActiveSheet.Name = "NewName" |
Переименовать лист по имени
1 | Таблицы ("OldSheet"). Name = "NewName" |
Переименовать лист по порядковому номеру листа
Здесь мы используем 1, чтобы переименовать первый лист в книге.
1 | Таблицы (1) .Name = "NewName" |
Переименовать лист по кодовому имени
Этот код переименует лист, используя его кодовое имя VBA (обсуждалось выше):
1 | Component.Name = "NewName" |
Проверьте, существует ли имя листа
Мы создали функцию, чтобы проверить, существует ли уже Лист с определенным именем.
123456789101112 | 'Проверить, существует ли диапазон на листе.'Оставьте поле пустым, чтобы проверить, существует ли лист'Входы:WhatSheet - строковое имя листа (например, Sheet1)WhatRange (Необязательно, по умолчанию = "A1") - строковое имя диапазона (например, "A1")Функция RangeExists (WhatSheet как строка, необязательно ByVal WhatRange As String = "A1") как логическоеТусклый тест как диапазонПри ошибке Возобновить ДалееУстановите test = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Номер ошибки = 0При ошибке GoTo 0Конечная функция |
Функция вернет ИСТИНА, если лист существует, или ЛОЖЬ, если нет.
Используйте функцию так:
123 | Sub Test_SheetExists ()MsgBox RangeExists («настройка»)Конец подписки |
Копировать лист и переименовать
Этот пример взят из нашей статьи о копировании листов.
После копирования и вставки листа вновь созданный лист становится ActiveSheet. Итак, чтобы переименовать скопированный лист, просто используйте ActiveSheet.Name:
12345678 | Sub CopySheetRename2 ()Листы ("Sheet1"). Копировать после: = Sheets (Sheets.Count)При ошибке Возобновить ДалееActiveSheet.Name = "LastSheet"При ошибке GoTo 0Конец подписки |
Примечание. Мы добавили обработку ошибок, чтобы избежать ошибок, если имя листа уже существует.