VBA Excel. Рабочий лист (обращение, переименование, скрытие)

    Обращение к рабочим листам Excel из кода VBA. Переименование листов, скрытие и отображение с помощью кода VBA Excel. Свойства Worksheets.Name и Worksheets.Visible.

    Обращение к рабочим листам

    Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.

    Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках — имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы — изменились их индексы.

    Обращение к рабочему листу в коде VBA Excel:

    • УникИмяЛиста — уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
    • N — индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
    • Имя листа — имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.

    Количество листов в рабочей книге Excel определяется так:

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

    В VBA Excel есть некоторые особенности в наименовании листов, так как у рабочего листа есть два свойства, связанных с именем: (Name) и Name. Откройте окно «Properties» в редакторе VBA, нажав клавишу «F4», и выделите любой лист в проводнике. Вы увидите, что в окне «Properties» свойству (Name) в скобках соответствует в проводнике уникальное имя листа без скобок, а свойству Name без скобок соответствует изменяемое имя листа в скобках. Оба имени в окне «Properties» можно редактировать.

    С помощью кода VBA Excel можно редактировать только имя листа Name, отображаемое на ярлычке листа и в проводнике без скобок. Для этого используется свойство рабочего листа Worksheets.Name со следующим синтаксисом:

    expression.Name

    где expression — переменная, представляющая собой объект Worksheet. Смена имени осуществляется путем присвоения нового значения свойству Worksheets.Name.

    Допустим, у нас есть лист с уникальным именем (Name) — Лист1, индексом — 1 и именем Name — МойЛист, которое необходимо заменить на имя — Реестр.

    Скрытие и отображение листов

    Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:

    expression.Visible

    где expression — переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:

    • False — лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
    • xlVeryHidden — лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
    • True — лист становится видимым.

    Аналоги присваиваемых значений:

    • False = xlHidden = xlSheetHidden = 1
    • xlVeryHidden = xlSheetVeryHidden = 2
    • True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)

    Примеры:

    Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье.

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    5 комментариев для “VBA Excel. Рабочий лист (обращение, переименование, скрытие)”

    1. Уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить невозможно. В статье «Кодовое имя листа — что это и зачем нужно? Какие плюсы и минусы?» приведён код, позволяющий это сделать.

    2. Здравствуйте!
      Хотел поделиться моментом, заслуживающим внимания, на мой взгляд:
      обратите внимание, что обращаться к листу можно и через переменную
      Worksheets(i).Activate
      но допустим, что мы пишем
      i = 2,
      а у нас в книге присутствуют несколько листов, в т.ч. лист с именем 2
      Каким же образом будет происходить обращение?
      Опытным путём я установил, что это зависит от типа переменной
      т.е. i будет использоваться в качестве имени листа, только если оно предварительно обозначено, как текстовая строка
      Dim i as String
      в других же случаях будет происходить переключение на второй лист (т.е. переменная считается индексом) если переменная никак не обозначена (при отключенном Option Explicit) или обозначена:
      Dim i или Dim i as Variant
      Dim i as Byte
      Думаю, и с другими числовыми форматами будет вести себя также.

    3. Добрый день!
      Нигде не могу найти информацию о максимально возможном количестве листов в Excel
      Спасибо за внимание

      1. Евгений

        Добрый день!
        На сайте разработчиков написано: «Количество листов в книге ограничено объемом доступной оперативной памяти». В скобках указано количество листов в новой книге по умолчанию.

    Добавить комментарий

    Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.