VBA Excel. Рабочий лист (обращение, переименование, скрытие)
Рабочий лист (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, смотрите в этой статье.
15 комментариев для “VBA Excel. Рабочий лист (обращение, переименование, скрытие)”
Уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить невозможно. В статье «Кодовое имя листа — что это и зачем нужно? Какие плюсы и минусы?» приведён код, позволяющий это сделать.
Отличная статья, спасибо!
Здравствуйте!
Хотел поделиться моментом, заслуживающим внимания, на мой взгляд:
обратите внимание, что обращаться к листу можно и через переменную
Worksheets(i).Activate
но допустим, что мы пишем
i = 2 ,
а у нас в книге присутствуют несколько листов, в т.ч. лист с именем 2
Каким же образом будет происходить обращение?
Опытным путём я установил, что это зависит от типа переменной
т.е. i будет использоваться в качестве имени листа, только если оно предварительно обозначено, как текстовая строка
Dim i as String
в других же случаях будет происходить переключение на второй лист (т.е. переменная считается индексом) если переменная никак не обозначена (при отключенном Option Explicit) или обозначена:
Dim i или Dim i as Variant
Dim i as Byte
Думаю, и с другими числовыми форматами будет вести себя также.
Добрый день!
Нигде не могу найти информацию о максимально возможном количестве листов в Excel
Спасибо за внимание
Добрый день!
На сайте разработчиков написано: «Количество листов в книге ограничено объемом доступной оперативной памяти». В скобках указано количество листов в новой книге по умолчанию.
Свойства и методы Worksheet
Эта статья содержит полное руководство по использованию Excel
VBA Worksheet в Excel VBA. Если вы хотите узнать, как что-то сделать быстро, ознакомьтесь с кратким руководством к рабочему листу VBA ниже.
Если вы новичок в VBA, то эта статья — отличное место для начала. Мне нравится разбивать вещи на простые термины и объяснять их на простом языке.
Вы можете прочитать статью от начала до конца, так как она написана в логическом порядке. Или, если предпочитаете, вы можете использовать оглавление ниже и перейти непосредственно к теме по вашему выбору.
Краткое руководство к рабочему листу VBA
В следующей таблице приведен краткий обзор различных методов
Worksheet .
Примечание. Я использую Worksheet в таблице ниже, не указывая рабочую книгу, т.е. Worksheets, а не ThisWorkbook.Worksheets, wk.Worksheets и т.д. Это сделано для того, чтобы примеры были понятными и удобными для чтения. Вы должны всегда указывать рабочую книгу при использовании Worksheets . В противном случае активная рабочая книга будет использоваться по умолчанию.
| Задача | Исполнение |
| Доступ к рабочему листу по имени |
Worksheets(«Лист1») |
| Доступ к рабочему листу по позиции слева |
Worksheets(2) Worksheets(4) |
| Получите доступ к самому левому рабочему листу |
Worksheets(1) |
| Получите доступ к самому правому листу |
Worksheets(Worksheets.Count) |
| Доступ с использованием кодового имени листа (только текущая книга) |
Смотри раздел статьи Использование кодового имени |
| Доступ по кодовому имени рабочего листа (другая рабочая книга) |
Смотри раздел статьи Использование кодового имени |
| Доступ к активному листу | ActiveSheet |
| Объявить переменную листа | Dim sh As Worksheet |
| Назначить переменную листа | Set sh = Worksheets(«Лист1») |
| Добавить лист | Worksheets.Add |
| Добавить рабочий лист и назначить переменную |
Worksheets.Add Before:= Worksheets(1) |
| Добавить лист в первую позицию (слева) |
Set sh =Worksheets.Add |
| Добавить лист в последнюю позицию (справа) |
Worksheets.Add after:=Worksheets(Worksheets.Count) |
| Добавить несколько листов | Worksheets.Add Count:=3 |
| Активировать рабочий лист | sh.Activate |
| Копировать лист | sh.Copy |
| Копировать после листа | sh1.Copy After:=Sh2 |
| Скопировать перед листом | sh1.Copy Before:=Sh2 |
| Удалить рабочий лист | sh.Delete |
| Удалить рабочий лист без предупреждения |
Application.DisplayAlerts = False sh.Delete Application.DisplayAlerts = True |
| Изменить имя листа | sh.Name = «Data» |
| Показать/скрыть лист | sh.Visible = xlSheetHidden sh.Visible = xlSheetVisible sh.Name = «Data» |
| Перебрать все листы (For) | Dim i As Long For i = 1 To Worksheets.Count Debug.Print Worksheets(i).Name Next i |
| Перебрать все листы (For Each) | Dim sh As Worksheet For Each sh In Worksheets Debug.Print sh.Name Next |
Вступление
Три наиболее важных элемента VBA — это Рабочая книга, Рабочий лист и Ячейки. Из всего кода, который вы пишете, 90% будут включать один или все из них.
Наиболее распространенное использование Worksheet в VBA для доступа к его ячейкам. Вы можете использовать его для защиты, скрытия, добавления, перемещения или копирования листа.
Тем не менее, вы будете в основном использовать его для выполнения некоторых действий с одной или несколькими ячейками на листе.
Использование Worksheets более простое, чем использование рабочих книг. С книгами вам может потребоваться открыть их, найти, в какой папке они находятся, проверить, используются ли они, и так далее. С рабочим листом он либо существует в рабочей книге, либо его нет.
Доступ к рабочему листу
В VBA каждая рабочая книга имеет коллекцию рабочих листов. В этой коллекции есть запись для каждого рабочего листа. Эта коллекция называется просто Worksheets и используется очень похоже на коллекцию Workbooks. Чтобы получить доступ к рабочему листу, достаточно указать имя.
Приведенный ниже код записывает «Привет Мир» в ячейках A1 на листах: Лист1, Лист2 и Лист3 текущей рабочей книги.
Коллекция Worksheets всегда принадлежит книге. Если мы не указываем рабочую книгу, то активная рабочая книга используется по умолчанию.
Скрыть рабочий лист
В следующих примерах показано, как скрыть и показать лист.
Если вы хотите запретить пользователю доступ к рабочему листу, вы можете сделать его «очень скрытым». Это означает, что это может быть сделано видимым только кодом.
Защитить рабочий лист
Другой пример использования Worksheet — когда вы хотите защитить его.
Индекс вне диапазона
При использовании Worksheets вы можете получить сообщение об ошибке:
Run-time Error 9 Subscript out of Range

Это означает, что вы пытались получить доступ к рабочему листу, который не существует. Это может произойти по следующим причинам:
- Имя Worksheet , присвоенное рабочим листам, написано неправильно.
- Название листа изменилось.
- Рабочий лист был удален.
- Индекс был большим, например Вы использовали рабочие листы (5), но есть только четыре рабочих листа
- Используется неправильная рабочая книга, например Workbooks(«book1.xlsx»).Worksheets(«Лист1») вместо
Workbooks(«book3.xlsx»).Worksheets («Лист1»).
Если у вас остались проблемы, используйте один из циклов из раздела «Циклы по рабочим листам», чтобы напечатать имена всех рабочих листов коллекции.
Использование индекса для доступа к рабочему листу
До сих пор мы использовали имя листа для доступа к листу. Указатель относится к положению вкладки листа в рабочей книге. Поскольку положение может быть легко изменено пользователем, не рекомендуется использовать это.
В следующем коде показаны примеры использования индекса.
В приведенном выше примере я использовал Debug.Print для печати в Immediate Window. Для просмотра этого окна выберите «Вид» -> «Immediate Window » (Ctrl + G).

Использование кодового имени рабочего листа
Лучший способ получить доступ к рабочему листу — использовать кодовое имя. Каждый лист имеет имя листа и кодовое имя. Имя листа — это имя, которое отображается на вкладке листа в Excel.
Изменение имени листа не приводит к изменению кодового имени, что означает, что ссылка на лист по кодовому имени — отличная идея.
Если вы посмотрите в окне свойств VBE, вы увидите оба имени. На рисунке вы можете видеть, что кодовое имя — это имя вне скобок, а имя листа — в скобках.

Вы можете изменить как имя листа, так и кодовое имя в окне свойств листа (см. Изображение ниже).

Если ваш код ссылается на кодовое имя, то пользователь может изменить имя листа, и это не повлияет на ваш код. В приведенном ниже примере мы ссылаемся на рабочий лист напрямую, используя кодовое имя.
Это делает код легким для чтения и безопасным от изменения пользователем имени листа.
Кодовое имя в других книгах
Есть один недостаток использования кодового имени. Он относится только к рабочим листам в рабочей книге, которая содержит код, т.е. ThisWorkbook.
Однако мы можем использовать простую функцию, чтобы найти кодовое имя листа в другой книге.
Использование приведенного выше кода означает, что если пользователь изменит имя рабочего листа, то на ваш код это не повлияет.
Существует другой способ получения имени листа внешней рабочей книги с использованием кодового имени. Вы можете использовать элемент VBProject этой Рабочей книги.
Вы можете увидеть, как это сделать, в примере ниже. Я включил это, как дополнительную информацию, я бы рекомендовал использовать метод из предыдущего примера, а не этот.
Резюме кодового имени
Ниже приведено краткое описание использования кодового имени:
- Кодовое имя рабочего листа может быть использовано непосредственно в коде, например. Sheet1.Range
- Кодовое имя будет по-прежнему работать, если имя рабочего листа будет изменено.
- Кодовое имя может использоваться только для листов в той же книге, что и код.
- Везде, где вы видите ThisWorkbook.Worksheets («имя листа»), вы можете заменить его кодовым именем рабочего листа.
- Вы можете использовать функцию SheetFromCodeName сверху, чтобы получить кодовое имя рабочих листов в других рабочих книгах.
Активный лист
Объект ActiveSheet ссылается на рабочий лист, который в данный момент активен. Вы должны использовать ActiveSheet только в том случае, если у вас есть особая необходимость ссылаться на активный лист.
В противном случае вы должны указать рабочий лист, который вы используете.
Если вы используете метод листа, такой как Range, и не упоминаете лист, он по умолчанию будет использовать активный лист.
Объявление объекта листа
Объявление объекта листа полезно для того, чтобы сделать ваш код более понятным и легким для чтения.
В следующем примере показан код для обновления диапазонов ячеек. Первый Sub не объявляет объект листа. Вторая подпрограмма объявляет объект листа, и поэтому код намного понятнее.
Вы также можете использовать ключевое слово With с объектом листа, как показано в следующем примере.
Доступ к рабочему листу в двух словах
Из-за множества различных способов доступа к рабочему листу вы можете быть сбитыми с толку. Так что в этом разделе я собираюсь разбить его на простые термины.
- Если вы хотите использовать тот лист, который активен в данный момент, используйте ActiveSheet.
2. Если лист находится в той же книге, что и код, используйте кодовое имя.
3. Если рабочая таблица находится в другой рабочей книге, сначала получите рабочую книгу, а затем получите рабочую таблицу.
Если вы хотите защитить пользователя от изменения имени листа, используйте функцию SheetFromCodeName из раздела «Имя кода».
Добавить рабочий лист
Примеры в этом разделе показывают, как добавить новую рабочую таблицу в рабочую книгу. Если вы не предоставите никаких аргументов для функции Add, то новый рабочий лист будет помещен перед активным рабочим листом.
Когда вы добавляете рабочий лист, он создается с именем по умолчанию, например «Лист4». Если вы хотите изменить имя, вы можете легко сделать это, используя свойство Name.
В следующем примере добавляется новый рабочий лист и изменяется имя на «Счета». Если лист с именем «Счета» уже существует, вы получите сообщение об ошибке.
В предыдущем примере вы добавляете листы по отношению к активному листу. Вы также можете указать точную позицию для размещения листа.
Для этого вам нужно указать, какой лист новый лист должен быть вставлен до или после. Следующий код показывает вам, как это сделать.
Удалить рабочий лист
Чтобы удалить лист, просто вызовите Delete.
Excel отобразит предупреждающее сообщение при удалении листа. Если вы хотите скрыть это сообщение, вы можете использовать код ниже:
Есть два аспекта, которые нужно учитывать при удалении таблиц.
Если вы попытаетесь получить доступ к рабочему листу после его удаления, вы получите ошибку «Subscript out of Range», которую мы видели в разделе «Доступ к рабочему листу».
Вторая проблема — когда вы назначаете переменную листа. Если вы попытаетесь использовать эту переменную после удаления листа, вы получите ошибку автоматизации, подобную этой:
Run-Time error -21147221080 (800401a8′) Automation Error
Если вы используете кодовое имя рабочего листа, а не переменную, это приведет к сбою Excel, а не к ошибке автоматизации.
В следующем примере показано, как происходят ошибки автоматизации.
Если вы назначите переменную Worksheet действительному рабочему листу, он будет работать нормально.
Цикл по рабочим листам
Элемент «Worksheets» — это набор рабочих листов, принадлежащих рабочей книге. Вы можете просмотреть каждый лист в коллекции рабочих листов, используя циклы «For Each» или «For».
В следующем примере используется цикл For Each.
В следующем примере используется стандартный цикл For.
Вы видели, как получить доступ ко всем открытым рабочим книгам и как получить доступ ко всем рабочим листам в ThisWorkbook. Давайте сделаем еще один шаг вперед — узнаем, как получить доступ ко всем рабочим листам во всех открытых рабочих книгах.
Примечание. Если вы используете код, подобный этому, для записи на листы, то сначала сделайте резервную копию всего, так как в итоге вы можете записать неверные данные на все листы.
Использование коллекции листов
Рабочая книга имеет еще одну коллекцию, похожую на Worksheets под названием Sheets. Это иногда путает пользователей. Чтобы понять, в первую очередь, вам нужно знать о типе листа, который является диаграммой.
В Excel есть возможность создать лист, который является диаграммой. Для этого нужно:
- Создать диаграмму на любом листе.
- Щелкнуть правой кнопкой мыши на графике и выбрать «Переместить».
- Выбрать первый вариант «Новый лист» и нажмите «ОК».
Теперь у вас есть рабочая книга, в которой есть типовые листы и лист-диаграмма.
- Коллекция «Worksheets » относится ко всем рабочим листам в рабочей книге. Не включает в себя листы типа диаграммы.
- Коллекция Sheets относится ко всем листам, принадлежащим книге, включая листы типовой диаграммы.
Ниже приведены два примера кода. Первый проходит через все листы в рабочей книге и печатает название листа и тип листа. Второй пример делает то же самое с коллекцией Worksheets.
Чтобы опробовать эти примеры, вы должны сначала добавить лист-диаграмму в свою книгу, чтобы увидеть разницу.
Если у вас нет листов диаграмм, то использование коллекции Sheets — то же самое, что использование коллекции WorkSheets.
Заключение
На этом мы завершаем статью о Worksheet VBA. Я надеюсь, что было полезным.
Три наиболее важных элемента Excel VBA — это рабочие книги, рабочие таблицы, диапазоны и ячейки.
Эти элементы будут использоваться практически во всем, что вы делаете. Понимание их сделает вашу жизнь намного проще и сделает изучение VBA увлекательнее.
Как использовать макрос VBA на скрытых листах. и скрыть их обратно
Я новичок в макросах VBA excel. Используя этот форум, я могу написать код, но я застрял в одном месте.
У меня в тетради 10 листов. 1-й лист — это мой рабочий лист, который выполняет все вычисления. Эти расчеты представлены на следующих 9 листах. Эти 9 листов генерируют мой отчет. В файле расчета я хочу скрыть все следующие 9 файлов и запустить макрос. как только расчеты в порядке. Я нажимаю кнопку «Создать отчет», и новый файл создается, открывается на моем рабочем столе и сохраняется в моем документе.
Проблема. Каким-то образом проходя через этот форум, я смог сгенерировать код, который делает все, но я не могу получить скрыть и показать часть. Код, который я написал, показывает все файлы из файла расчета. (Сохраняет их невидимыми) и скрывает файл во вновь созданном отчете. (Поскольку все файлы не могут быть скрыты в любом новом Excel, я получаю ошибку времени выполнения ‘1004’, не могу установить visible свойство класса рабочего листа).
Вот мой код, пожалуйста, помогите мне его решить — так что у меня может быть только 1 лист в файле расчета, а остальные остаются скрытыми, когда макрос работает. И вновь созданный файл будет иметь все 9 вкладок.
3 ответа
Попробуйте скрыть и показать свои листы таким образом, это сэкономит вам много энергии, если позже потребуется изменить их.
Спасибо, ребята, я как-то методом проб и ошибок и с вашей помощью разобрался. Я просто поставил .close то, что видел где-то в этой группе.
Вот измененный код, основанный на всех предложениях. Может есть какие-то ненужные вещи но как-то работает. Большое спасибо вам всем
Предлагаю вам настроить это, чтобы убедиться, что сначала существует Cover .
В таком случае цикл для скрытия листов может быть установлен более напрямую — на самом деле тест Then не требуется.
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 – МойЛист, которое необходимо заменить на имя – Реестр.
Как скрыть лист в Excel?
Процедура скрытия листа достаточно простая — в нижней панели щелкаем правой кнопкой мыши по названию листа, который хотим сделать невидимым, и в выпадающем меню выбираем команду Скрыть:

Если нужно спрятать сразу несколько листов, то удерживая клавишу Ctrl выделяем нужные листы с помощью мышки и повторяем вышеописанные действия (щелкаем правой кнопкой мыши по любому из выделенных листов и далее нажимаем Скрыть).
Группировка
Если выделить несколько строк или столбцов, а затем выбрать в меню Данные – Группа и структура – Группировать (Data – Group and Outline – Group) , то они будут охвачены прямоугольной скобкой (сгруппированы). Причем группы можно делать вложенными одна в другую (разрешается до 8 уровней вложенности):
Более удобный и быстрый способ – использовать для группировки выделенных предварительно строк или столбцов сочетание клавиш Alt+Shift+стрелка вправо, а для разгруппировки Alt+Shift+стрелка влево, соответственно.
Такой способ скрытия ненужных данных гораздо удобнее – можно нажимать либо на кнопку со знаком “+” или “–“, либо на кнопки с цифровым обозначением уровня группировки в левом верхнем углу листа – тогда все группы нужного уровня будут сворачиваться или разворачиваться сразу.
Кроме того, если в вашей таблице присутствуют итоговые строки или столбцы с функцией суммирования соседних ячеек, то есть шанс (не 100%-ый правда), что Excel сам создаст все нужные группировки в таблице одним движением – через меню Данные – Группа и структура – Создать структуру (Data – Group and Outline – Create Outline) . К сожалению, подобная функция работает весьма непредсказуемо и на сложных таблицах порой делает совершенную ерунду. Но попробовать можно.
В Excel 2007 и новее все эти радости находятся на вкладке Данные (Data) в группе Структура (Outline) :
Как сделать очень скрытый лист в Excel?
Параметры отображения любого листа в Excel мы можем настроить посредством Visual Basic. Переходим в редактор Visual Basic (на панели вкладок выбираем Разработчик -> Код -> Visual Basic или воспользуемся комбинацией клавиш Alt + F11):

В левой верхней части окна в списке выбираем нужный нам лист и чуть ниже подробно смотрим в блок с настройками (если он изначально не отображается, то уже в панели вкладок Visual Basic выбираем View -> Properties Window и блок появится).
За отображение листа в параметрах отвечает свойство Visible и как мы видим всего есть 3 варианта:
- xlSheetVisible. Лист открыт и отображается во вкладках;
- xlSheetHidden. Лист скрыт, но отображается в списке невидимых листов;
- xlSheetVeryHidden. Лист скрыт и нигде не отображается.
Таким образом, чтобы скрыть лист средствами Visual Basic указываем значение параметра xlSheetHidden, а чтобы показать устанавливаем xlSheetVisible.
Из названия последнего значения xlSheetVeryHidden и взялся термин очень скрытого листа, но в принципе также часто можно встретить употребление выражение супер скрытого. При этом, что очень важно, установить значение параметра xlSheetVeryHidden можно только через Visual Basic, что и не позволяет обычному пользователю обнаружить очень скрытые листы стандартным способом.
Вернемся к нашему примеру.
Так как мы в начале скрывали Лист1, то для него установлена видимость xlSheetHidden, а нас сейчас интересует как раз 3 вариант. Выбираем его и теперь в списке скрытых листов пусто (кнопка в данном случае не активна, хотя мы знаем, что очень скрытые листы в книге на самом деле есть):

Теперь пользователь не увидит такой супер скрытый лист в интерфейсе Excel, однако он все же сможет его обнаружить если зайдет в редактор Visual Basic.
Если же стоит задача найти такие листы и отобразить их, то повторяем аналогичные действия и в Visual Basic для подобных листов устанавливаем параметр xlSheetVisible, после чего все листы станут видимыми.
Через надстройку VBA-Excel
Самый удобный способ, который не требует специальных знаний, а также позволяет быстро скрыть большое количество листов – установить надстройку VBA-Excel. Для того, чтобы скрыть или отобразить листы в Excel необходимо:
- Перейти на вкладку VBA-Excel (доступна после установки надстройки).
- В меню Диспетчеры выбрать пункт Диспетчер листов.

- В окне диспетчер выберите листы, видимость которых необходимо изменить и нажмите команду Видимость.

Скрыть строки вручную
Простейший способ заключается в том, чтобы зрительно отыскать пустые строки и выделить их. При выделении нескольких строк нужно удерживать клавишу Ctrl на клавиатуре. После этого необходимо навести курсор на выделенное поле, кликнуть по нему правой кнопкой мыши и выбрать пункт “Скрыть” из контекстного меню. Выделенные строки будут скрыты. Способ простой, но имеет свои минусы, можно пропустить строку, можно ошибочно выделить не ту строку.
Как показать скрытый лист в Excel?
Чтобы открыть скрытый лист обратно мы также в нижней панели правой кнопкой мыши щелкаем по любому из листов и выбираем команду Показать. В появившемся окне можно посмотреть все невидимые листы книги (даже если он всего один) и выбрать какой именно лист необходимо вывести на экран:

Со скрытием и отображением листов разобрались, давайте перейдем к чуть более сложной задаче, а именно научимся скрывать лист так, чтобы обычный пользователь не смог его отобразить.
С помощью свойства листов в редакторе кода
Для того чтобы скрыть лист необходимо:
- Открыть редактор кода сочетанием клавиш Alt+F11.
- В левом меню раскройте проект с одноименным названием вашей книги.
- Найдите в списке объектов лист, который необходимо скрыть.
- В списке свойств найдите свойство Visible и выберите из списка значений 2 – xlSheetVeryHidden.

Для отображения скрытого листа можно аналогичным способом установить значение -1 – xlSheetVisible.
Скрываем листы
Чтобы скрыть лист (ярлычки в самом низу окна Excel), кликните правой кнопкой мыши по ярлычку, который нужно скрыть, и в контекстном меню нажмите Скрыть
(Hide). Ярлычек исчезнет, но не удалится окончательно.

Нельзя скрыть все листы рабочей книги. Если Вы попытаетесь скрыть последний видимый лист, то получите вот такое предупреждение:

Книга должна содержать не менее одного видимого листа.
Чтобы скрыть, удалить или перенести выделенные листы, необходимо сначала вставить новый лист или сделать видимым скрытый лист.
Чтобы отобразить лист, кликните правой кнопкой мыши по любой видимой вкладке и выберите в появившемся меню Показать
(Unhide).

В появившемся диалоговом окне (Unhide) выберите лист, который хотите сделать видимым, и нажмите ОК.
Замечание:
За одно действие Вы можете сделать видимым только один лист.

Кроме этого, показать скрытые листы можно другим способом. Перейдите на вкладку Главная
(Home). В разделе Ячейки
(Cells) нажмите Формат
(Format). В группе команд Видимость
(Visibility) нажмите Скрыть и отобразить
(Hide & Unhide) и в открывшемся меню выберите Отобразить лист
(Unhide Sheet).

Появится диалоговое окно Вывод на экран скрытого листа
(Unhide). Выберите нужный лист и нажмите ОК, как было описано выше.
Скрываем рабочую книгу полностью
Чтобы полностью скрыть рабочую книгу Excel, перейдите на вкладку Вид
(View).

В разделе Окно
(Window) нажмите Скрыть
(Hide).

Окно Excel останется открытым, но область таблицы станет пустой. Чтобы отобразить рабочую книгу, нажмите Вид
> Окно
> Отобразить
(View > Window > Unhide).

Появится диалоговое окно Вывод на экран скрытого окна книги
(Unhide) со списком открытых в настоящий момент рабочих книг. Если Вы скрывали рабочие книги, которые в данный момент не открыты, то их в этом списке не будет.
Если Вы скроете рабочую книгу и сохраните файл, то в следующий раз, когда откроете этот файл, книга по-прежнему будет скрыта. Книга будет оставаться скрытой до тех пор, пока Вы сами не отобразите её.

Иногда возникают ситуации, когда надо скрыть лист со всем его содержимым от посторонних любопытных глаз. Очень часто это делается из контекстного меню листа (для счастливых обладателей 2007 Excel. Подробнее: ). Но при использовании данного метода необходимо защитить книгу, иначе отобразить скрытые листы сможет каждый (тем же правым щелчком мыши — Отобразить).
А что делать, если книгу не надо защищать? Ведь часто необходимо оставить пользователям возможность работы со структурой книги, например, добавлять листы. Как тогда скрыть лист так, чтобы его нельзя было отобразить? Есть достаточно простой способ через редактор VBA, при этом обладать навыком программирования вообще не нужно. Итак, определились какой лист надо скрыть.
- заходим в редактор VBA(Alt+F11)
- жмем сочетание клавиш Ctrl+R или идем в меню View—Project Explorer
(чтобы отобразить окно объектов проекта VBA) - жмем F4или через View—Properties Window
(чтобы отобразить окно свойств) - в левой части окна (в Project Explorer) ищем книгу, лист в которой надо скрыть и раскрываем её папку(на скрине это VBA Project (Книга1))
- раскрываем папку Microsoft Excel Objects и выделяем там лист с нужным именем
- в Окне свойств (Properties Window) находим свойство Visibleи назначаем ему значение xlSheetVeryHidden
Чтобы затем отобразить этот лист необходимо свойству Visible задать значение — xlSheetVisible.
При этом для отображения листа необходимо будет обязательно зайти в редактор VBA — простым методом отобразить не получится. И книгу защищать не надо. Что нам и было необходимо.
Для большей надежности можно защитить проект VBA, чтобы не было возможности отобразить лист из VBA, не указав пароль. На функционал это не повлияет совершенно.
В том же окне VBA(Alt+F11):
- Tools—VBAProject Properties-вкладка Protection
- вписывается/удаляется сам пароль в полях Passwordи Confirm password.
Скрыть все листы в книге, кроме листа с именем «Видимый» можно следующим макросом:
Sub Hide_All_Sheets() Dim wsSh As Object For Each wsSh In ActiveWorkbook.Sheets If wsSh.Name «Видимый» Then wsSh.Visible = xlSheetVeryHidden «отобразить – xlSheetVisible; сделать лист просто скрытым — xlSheetHidden Next wsSh
End Sub
Скрывать листы можно используя контекстное меню, вызванное правой кнопкой мышки по ярлычку листа. Как было описано в предыдущем уроке. Но листы можно скрывать так, чтобы их не было видно даже в списке скрытых листов. Причем без использования защиты структуры книги. Для реализации данной задачи нужно воспользоваться параметрами, которые доступны в режиме VBA-редактора (Alt+F11).
Полезный Лайфхак в Excel
Чтобы запретить вставку новых строк и столбцов в Excel без использования защиты листа нужно сделать так:
Вот и все теперь в лист нельзя вставить строку или столбец. Если нужно запретить вставлять только строки, тогда вводим любое значение в самую последнюю строку (например, A1048576). А если запретить вставлять только столбцы тогда вводим любое значение в последнем столбце (например, XFD1).
Надежное скрытие листов, которых нельзя отобразить стандартными средствами (опцией Показать). Полезные лайфхаки для работы с листами и ячейками.
Любой лист книги можно скрыть, чтобы удалить его из представления. Можно также скрыть окно книги, чтобы удалить его из рабочей области. Данные скрытых листов и книг не видны, но на них по-прежнему могут указывать ссылки из других листов и книг. При необходимости скрытые листы и книги можно отобразить.
По умолчанию на панели задач отображаются все книги, которая открывается, но можно скрыть или отобразить их на панели задач при необходимости.
Примечание:
Снимки экрана в этой статье получены в Excel 2016. Если вы используете другую версию, интерфейс может немного отличаться, но функции будут такими же.
Скрытие и отображение окон книг на панели задач Windows
Excel 2013 реализована в Единый интерфейс документа, где каждая книга откроется в отдельном окне. Указанные ниже действия применяются только к Excel 2007 и 2010, для Windows.
Как найти все скрытые строки на листе Excel с помощью макроса
У нас иметься таблица с данными по заказам, но некоторые строки листа скрыты:

Необходимо узнать сколько и какие строки скрытии от визуального анализа таблицы заказов. По умолчанию Excel не располагает таким инструментом, который смог бы решить данную задачу в пару кликов мышкой. Вручную выполнить задачу можно, но сложно. Особенно если после отображения скрытых строк нам нужно снова их скрывать. Кроме того, лист может быть защищен от изменений паролем. Оптимальным решением данной задачи будет написание собственного макроса для отображения информации о скрытых строках.
Чтобы написать свой макрос откройте редактор кода макроса: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» или нажмите комбинацию клавиш ALT+F11:

В редакторе вставьте новый модуль выбрав инструмент «Insert»-«Module» и введите в него этот код:
Sub HiddenLinesInfo()
Dim i As Long
Dim text As String
Dim pervoj As String
text = «В данном листе скрыты следующие строки: »
For i = 1 To ActiveSheet.Rows.Count
If ActiveSheet.Rows(i).Hidden = True Then
If pervoj = «» Then
pervoj = i
End If
Else
If pervoj <> «» Then
text = text & vbNewLine & pervoj & «:» & i — 1
pervoj = «»
Else
If i > ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row Then
Exit For
End If
End If
End If
Next
MsgBox text
End Sub

Теперь если в таблице заказов необходимо получить информацию о скрытых строках, тогда выберите инструмент для запуска макроса: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«HiddenLinesInfo»-«Выполнить».

В результате после запуска макроса отобразиться сообщение с информацией о всех скрытых строках таблицы заказов.
Скрыть столбцы используя сортировку
Если пустых столбцов много и искать их зрительно проблематично, то можно использовать сортировку для того чтобы сгруппировать и после этого скрыть их, выделив сразу весь диапазон либо просто вывести за пределы печати. Минусом такого способа является то, что очередность столбцов изменяется.
Таблица в верхнем левом углу
В первую очередь рассмотрим все доступные варианты поиска номера последней заполненной строки для таблиц, расположенных в верхнем левом углу рабочего листа. Такие таблицы обычно представляют собой простые базы данных в Excel, или, как их еще называют, наборы записей.

Вариант 1
Основная формула для поиска последней строки в такой таблице, не требующая соблюдения каких-либо условий:
PosStr = Cells(1, 1).CurrentRegion.Rows.Count
Вариант 2
Ниже таблицы не должно быть никаких записей:
PosStr = ActiveSheet.UsedRange.Rows.Count
Вариант 3
В первом столбце таблицы не должно быть пропусков, а также в таблице должно быть не менее двух заполненных строк, включая строку заголовков:
PosStr = Cells(1, 1).End(xlDown).Row