3 способа показать несколько листов в учебнике по Excel + VBA

Итог: узнайте несколько способов, как показать несколько листов одновременно с помощью макроса VBA или надстройки.

Уровень мастерства: Средний

Не удается отобразить несколько листов в Excel?

Как вы, вероятно, знаете, вы не можете отобразить два или более листов одновременно в Excel. Меню «Показать» позволяет выбрать только один лист за раз.

Cannot Unhide Multiple Sheets

Это может сделать процесс показа нескольких листов очень трудоемким, особенно если вы хотите отобразить все листы в рабочей книге. Поэтому в этой статье мы рассмотрим несколько разных способов быстрого отображения листов.

# 1 — Используйте окно VBA Immediate, чтобы отобразить все

Самый быстрый способ сделать все листы видимыми в Excel — это использовать макрос (VBA). В следующей строке кода VBA цикл For Next Loop используется для циклического просмотра каждого листа в активной книге и отображения каждого листа.

For Each ws In Sheets:ws.Visible=True:Next

Вы можете запустить этот код в непосредственном окне редактора VB в три простых шага:

  1. Alt + F11 (открывает окно редактора VB)
  2. Ctrl + G (открывает немедленное окно)
  3. Вставьте следующую строку кода в Immediate Window и нажмите Enter

For Each ws In Sheets:ws.Visible=True:Next

Скриншот ниже показывает, как реализовать эти шаги.

Unhide All Excel Worksheets with the VBA Immediate Window

Эта строка кода проходит по всем рабочим листам в рабочей книге и устанавливает для каждого видимого свойства листа значение «True». Это делает каждый лист видимым, что аналогично отображению каждого листа.

Символ двоеточия «:», используемый в коде, позволяет объединить несколько строк кода в одну строку. Это позволяет запускать в «Немедленном окне», потому что «Немедленное окно» оценивает только одну строку кода за раз.

Ознакомьтесь с моей статьей о 5 способах использования окна VBA Immediate, чтобы узнать больше. И большое спасибо Jan Karel Pieterse из www.jkp-ads.com за то, что поделились этим трюком в разделе комментариев.

# 2 — Использование макроса для отображения нескольких листов

Если вы ломаете голову над этой строкой кода в # 1, этот раздел должен помочь объяснить это лучше.

Макрос ниже — это та же самая строка кода, но она разбита на несколько строк. Это значительно облегчает чтение и понимание.

Sub Unhide_Multiple_Sheets()
Dim ws As Worksheet
    
    For Each ws In ActiveWorkbook.Worksheets
        
        ws.Visible = xlSheetVisible
    
    Next ws

End Sub

Строки в приведенном выше коде, начинающиеся с «For» и «Next», представляют оператор цикла For-Next. Первая строка «For Each ws In ActiveWorkbook.Worksheets» указывает макросу циклически проходить по каждому листу в коллекции рабочих листов.

The Unhide Mulitple Sheets in Excel VBA Macro Explained

Эта строка также ссылается на переменную «ws» и устанавливает ее для представления объекта рабочего листа. Это означает, что «ws» временно представляет текущий рабочий лист в цикле.

Когда вводится строка кода «Next ws», макрос переходит обратно к первой строке кода в цикле и снова оценивает ее. Он продолжает циклически перебирать все листы в коллекции рабочих листов (Activeworkbook.Worksheets).

Затем мы можем использовать «ws» внутри цикла, чтобы изменить свойства текущего рабочего листа. В этом случае мы устанавливаем свойство «Видимый» листа, чтобы оно было видимым (xlSheetVisible). Свойство visible имеет три различных свойства на выбор:

xlSheetHidden

xlSheetVeryHidden

xlSheetVisible

Excel VBA Worksheet Visible Property Enumerations

Вы также можете установить для свойства значение «True», которое работает так же, как xlSheetVisible.

Вот документация по VBA Visible property  от Microsoft. И ознакомьтесь с моей статьей the For Next Loop для подробного объяснения того, как это работает.

Показать листы, которые содержат определенное имя

Что, если мы хотим только показать листы, которые содержат слово «pivot» в названии листа?

Мы можем добавить простую инструкцию IF в макрос только для отображения листов, которые содержат определенное имя или текст.

Sub Unhide_Sheets_Containing()
Dim ws As Worksheet
    
    For Each ws In ActiveWorkbook.Worksheets
        If InStr(ws.Name, "pivot") > 0 Then
            ws.Visible = xlSheetVisible
        End If
    Next ws

End Sub

Функция InStr ищет текст в строке и возвращает позицию первого вхождения текста. Это сокращение от InString, и функция аналогична функциям ПОИСК или НАЙТИ в Excel.

Таким образом, в этом случае мы ищем любой лист, который содержит слово «pivot» в названии листа. Ссылка «ws.name» возвращает имя листа, который в данный момент оценивается в цикле For-Next.

Таким образом, эта строка «Если InStr (ws.Name,« pivot »)> 0 Тогда» в основном говорит, что если в имени листа найдено слово «pivot», то функция Instr вернет число больше нуля. Оператор IF будет иметь значение True, и будет выполнена следующая строка кода, чтобы отобразить лист.

Если слово «pivot» НЕ найдено в имени листа, тогда оператор IF будет иметь значение «False», а код пропустит все строки, пока не достигнет строки «End If». Поэтому лист, который в данный момент оценивается в цикле, сохранит свое текущее свойство visible (видимое или скрытое).

Этот макрос отлично работает, если вы скрываете и скрываете листы каждый день / неделю / месяц для сохраняемого вами отчета. Запустите макрос, чтобы отобразить определенные листы при открытии книги. После того, как вы закончите, запустите тот же код, но измените свойство visible на xlSheetHidden, чтобы заново скрыть листы (для этого вы можете создать новый макрос).

# 3 — Используйте Tab Hound или Tab Control

Если весь этот код заставляет вас вращаться, надстройка Tab Hound позволяет отображать несколько листов одним нажатием кнопки просмотра.

Скриншот ниже показывает, насколько это просто.

Unhide Multiple Sheets with the Tab Hound Add-in for Excel

В окне Tab Hound содержится список всех листов рабочей книги. Вы можете выбрать несколько листов в списке, а затем нажать кнопку «Показать», чтобы отобразить все выбранные листы.

Это делает процесс показа нескольких листов действительно быстрым!

Вкладка Hound также содержит дополнительные способы фильтрации списка листов. Вы можете ввести поиск в поле поиска, отфильтровать все видимые или скрытые вкладки и даже отфильтровать по цвету вкладок. Это позволяет легко находить листы, которые вы ищете, а затем выполнять над ними такие действия, как скрытие / скрытие.

В этом видео также показано, как быстро скрыть и показать несколько листов с помощью Tab Hound

Нажмите здесь, чтобы узнать больше о Tab Hound

Публикация отчетов? Управление вкладками сэкономит ваше время

Если вы создаете еженедельные или ежемесячные отчеты и хотите убедиться, что все нужные листы спрятаны перед отправкой, надстройка Tab Control может сэкономить вам много времени.

Вот сценарий, с которым мы обычно сталкиваемся …

Нам необходимо обновить рабочую книгу новыми данными на этой неделе и внести некоторые изменения, прежде чем отправлять ее по электронной почте. Эти обновления требуют от нас показать несколько листов, внести изменения, а затем снова скрыть листы. Это может занять много времени, если вам нужно скрыть / показать много листов.

Quickly Hide and Unhide Multiple Sheets with Tab Control Add-in

Вкладка «Управление» установит контрольный лист в вашей рабочей книге со списком всех имен рабочих листов. Вы можете установить видимое свойство для каждого листа в списке, а затем нажать кнопку, чтобы скрыть или показать все листы на основе списка.

Это означает, что вы можете настроить контрольный лист для определенного вида, чтобы были видны только определенные рабочие листы. Нажмите кнопку «Запустить обновление», и все листы будут скрыты / скрыты на основе вашего контрольного листа. Это гарантирует, что ваш отчет будет показывать правильные листы каждый раз, когда вы отправляете его, и вы будете выглядеть действительно организованно.

Надстройка Tab Control входит в состав Tab Hound.

Нажмите здесь, чтобы узнать больше о Tab Hound

Заключение

Для одновременного отображения нескольких листов в Excel потребуется код или макрос. Есть еще один способ использования пользовательских представлений, но он имеет ограничения, если вы используете таблицы Excel (а я люблю таблицы).

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

Если кодирование не ваша вещь, оцените надстройку Tab Hound. Это сэкономит ваше время и сделает вашу жизнь намного проще. (беспроигрышный вариант!)

Оцените статью
Добавить комментарий

  1. Сергей

    Здравствуйте Дмитрий ! Подскажите мне как новичку , как сделать видимым расчетный лист ? Сейчас этот лист выглядит как пчелиные соты закрашенные в темный цвет. За ранее благодарю .

    Ответить
    1. Дмитрий Якушев автор

      без файла сложно подсказать( Понимаю, что уже два месяца прошло, но если что — напишите info@akademia-excel.ru

      Ответить