Skip to content
Как скрыть все, кроме активного рабочего листа
На чтение 2 мин. Просмотров 2k.
Что делает макрос: Бывают ситуации, когда Вы не можете удалить все, кроме активного листа, как мы это делали в предыдущем макросе. Есть более мягкий вариант — просто скрыть листы. Excel не позволяет скрыть все листы в книге — по крайней мере, один должен быть виден. Тем не менее, вы можете скрыть все, кроме активного листа.
Содержание
- Как макрос работает
- Код макроса
- Как работает этот код
- Как использовать
Как макрос работает
Этот макрос с помощью цикла пробегает по всем рабочим листам и проверяет на соответствие имени каждого рабочего листа и имя активного листа. Каждый раз, когда имя не совпадает, он скрывает лист.
Код макроса
Sub SkritVseKromeAktivnogoLista() 'Шаг 1: Объявляем переменную Dim ws As Worksheet 'Шаг 2: Запускаем цикл по всем рабочим листам For Each ws In ThisWorkbook.Worksheets 'Шаг 3: Сравниваем имя каждого листа с активным If ws.Name <> ThisWorkbook.ActiveSheet.Name Then 'Шаг 4: Скрываем лист, если не совпадают ws.Visible = xlSheetHidden End If 'Шаг 5: Переходим на следующий рабочий лист Next ws End Sub
Как работает этот код
- Объявляем переменную WS, которая будет хранить имя каждого листа.
- На шаге 2 макрос начинает цикл по всем рабочим листам в этой книге.
- На этом этапе сравниваем активное имя листа с листом, который определяется с помощью цикла.
- Если имена листов различны, макрокоманда скрывает лист.
- На шаге 5, переходим к следующему листу книги и повторяем проверку снова. После того, как пробежались по всем листам, макрос завершается.
Вы заметили, что мы использовали xlSheetHidden в нашем макросе. Это свойство, которое получается, когда мы щелкает правой кнопкой мыши на листе и выбираем: Скрыть. В этом случае пользователь может щелкнуть правой кнопкой мыши на любой вкладке и выбрать: Отобразить. Он увидит все листы, которые скрыты. Но есть один вариант скрытия, который является более секретным. Если вы будете использовать xlSheetVeryHidden, чтобы скрыть свои листы, пользователи не смогут увидеть их, даже если они щелкнут правой кнопкой мыши на любой вкладке и выберут:Отобразить. Единственный способ, чтобы отобразить лист, скрытый таким способом, с помощью VBA.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.
Обращение к рабочим листам Excel из кода VBA. Переименование листов, скрытие и отображение с помощью кода VBA Excel. Свойства Worksheets.Name и Worksheets.Visible.
Обращение к рабочим листам
Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.
Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках — имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы — изменились их индексы.
Обращение к рабочему листу в коде VBA Excel:
‘По уникальному имени УникИмяЛиста ‘По индексу Worksheets(N) ‘По имени листа на ярлычке Worksheets(«Имя листа») |
- УникИмяЛиста — уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
- N — индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
- Имя листа — имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.
Количество листов в рабочей книге Excel определяется так:
‘В активной книге Worksheets.Count ‘В любой открытой книге, ‘например, в «Книга1.xlsm» Workbooks(«Книга1.xlsm»).Worksheets.Count |
Переименование листов
В 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 — МойЛист, которое необходимо заменить на имя — Реестр.
Лист1.Name = «Реестр» Worksheets(1).Name = «Реестр» Worksheets(«МойЛист»).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 вызывает ошибку)
Примеры:
Лист1.Visible = xlSheetHidden Лист2.Visible = —1 Worksheets(Worksheets.Count).Visible = xlVeryHidden Worksheets(«МойЛист»).Visible = True |
Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье.
Хитрости »
Как сделать лист очень скрытым
1 Май 2011 90261 просмотров
Иногда возникают ситуации, когда надо скрыть лист со всем его содержимым от посторонних любопытных глаз. Очень часто это делается из контекстного меню листа (для счастливых обладателей 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
- для защиты устанавливается галочка «Lock project for viewing«; для разблокировки — снимается
- вписывается/удаляется сам пароль в полях Password и Confirm password.
Скрыть только определенные листы активной книги можно следующим кодом:
Sub Hide_Sheets() Dim ws, aSheets aSheets = Array("Лист1", "Списки", "Лист2") 'через запятую перечисляем листы для скрытия(обязательно в кавычках) For Each ws In aSheets ActiveWorkbook.Sheets(ws).Visible = xlSheetVeryHidden 'отобразить – xlSheetVisible; сделать лист просто скрытым - xlSheetHidden Next wsSh End Sub
Как использовать: Для начала надо убедиться, что разрешены макросы и при необходимости включить их: почему не работает макрос. Затем копируем код выше, из Excel переходим в редактор VBA(Alt+F11) —Insert —Module. Вставляем туда скопированный код. Теперь код можно вызывать нажатием клавиш Alt+F8 -выделяем Hide_Sheets —Выполнить(Run).
Скрыть все листы в активной книге, кроме листа с именем «Видимый», можно следующим кодом:
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
Скрыть абсолютно все листы не получится — Excel не позволит это сделать, т.к. в книге должен быть видимым хотя бы один лист.
Также см.:
Как сделать лист скрытым?
Изменить видимость листов
Почему нет листов?
Статья помогла? Сделай твит, поделись ссылкой с друзьями!
- Что делает макрос
- Код макроса
- Как работает макрос
- Как использовать
- Скачать файл
Ссылка на это место страницы:
#zadacha
Бывают ситуации, когда Вы не можете удалить все, кроме активного листа. Есть более мягкий вариант — просто скрыть листы. Excel не позволяет скрыть все листы в книге — по крайней мере, один должен быть виден. Тем не менее, вы можете скрыть все, кроме активного листа.
Этот макрос с помощью цикла пробегает по всем рабочим листам и проверяет на соответствие имени каждого рабочего листа и имя активного листа. Каждый раз, когда имя не совпадает, он скрывает лист.
Ссылка на это место страницы:
#formula
Sub
SkritVseKromeAktivnogoLista()
Dim
ws
As
Worksheet
For
Each
ws
In
ThisWorkbook.Worksheets
-
If
ws.Name <> ThisWorkbook.ActiveSheet.Name
Then
ws.Visible = xlSheetHidden
End
If
Next
ws
End
Sub
Ссылка на это место страницы:
#kak
1. Объявляем переменную WS, которая будет хранить имя каждого листа.
2. На шаге 2 макрос начинает цикл по всем рабочим листам в этой книге.
3. На этом этапе сравниваем активное имя листа с листом, который определяется с помощью цикла.
4. Если имена листов различны, макрокоманда скрывает лист.
5. На шаге 5, переходим к следующему листу книги и повторяем проверку снова.
После того, как пробежались по всем листам, макрос завершается. Мы использовали xlSheetHidden в нашем макросе. Это свойство, которое получается, когда мы щелкает правой кнопкой мыши на листе и выбираем: Скрыть. В этом случае пользователь может щелкнуть правой кнопкой мыши на любой вкладке и выбрать: Отобразить. Он увидит все листы, которые скрыты. Но есть один вариант скрытия, который является более секретным. Если вы будете использовать xlSheetVeryHidden, чтобы скрыть свои листы, пользователи не смогут увидеть их, даже если они щелкнут правой кнопкой мыши на любой вкладке и выберут: Отобразить. Единственный способ, чтобы отобразить лист, скрытый таким способом, с помощью VBA.
Ссылка на это место страницы:
#touse
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
1. Активируйте редактор Visual Basic, нажав ALT + F11.
2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
3. Выберите Insert➜Module.
4. Введите или вставьте код во вновь созданном модуле.
Ссылка на это место страницы:
#file
Файлы статей доступны только зарегистрированным пользователям.
1. Введите свою почту
2. Нажмите Зарегистрироваться
3. Обновите страницу
Вместо этого блока появится ссылка для скачивания материалов.
Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель — помочь вам эффективнее работать в Excel.
Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.
Подписывайтесь на нас в соц.сетях:
В статье «Как скрыть /отобразить страницу в Excel» мы рассмотрели как вручную открыть/ скрыть лист книги, все то же самое можно сделать и написав простой VBA макрос:
Sub Макрос1 () ActiveWindow.SelectedSheets.Visible = False 'Прячем активный лист Sheets ("Лист2").Visible = False 'Прячем лист с именем "Лист2", можно аналогично отобразить лист обращаясь к нему по имени, но с параметром 'true' End Sub
Лист так же можно скрыть и вручную из редактора VBA. Зайдем в редактор (Alt+F11) и кликнув на соответствующий лист, в настройках в параметре Visible выберем интересующий нас статус видимости листа, в том числе статус «VeryHidden», который позволит убрать лист из списка скрытых листов (список вызывается из самого документа Excel при клике правой кнопкой мыши по названию листа):
Лист совсем скрыт
Будем благодарны, если Вы нажмете +1 и/или Мне нравится внизу данной статьи или поделитесь с друзьями с помощью кнопок расположенных ниже.