Как создать меню листов в Excel: от простого списка до интерактивной панели

Работа с десятками листов в Microsoft Excel часто превращается в хаос: приходится листать вкладки в поисках нужного отчёта, сводной таблицы или справочника. Потерянное время на клики мышью и случайные ошибки при переключении — знакомая история? Решение есть: меню листов — удобный инструмент для быстрой навигации, который можно реализовать даже без знания программирования.

В этой статье вы найдёте 5 проверенных способов создать меню листов — от элементарного списка с гиперссылками до профессиональной панели с кнопками и поиском. Мы разберём каждый метод с пошаговыми инструкциями, скриншотами и нюансами, которые экономят часы работы. А если вы боитесь сломать файл — не переживайте: все решения обратимы и не требуют сохранения в формате .xlsm (хотя для макросов это обязательно).

Перед тем как приступить, ответьте на вопрос: какой тип меню вам нужен?

📊 Какое меню листов вы хотите создать?
Простой список с гиперссылками
Выпадающий список
Панель с кнопками
Меню с поиском по названиям
Автоматически обновляемое меню

1. Простейшее меню: список листов с гиперссылками

Если вам нужно быстрое решение без формул и макросов, этот метод подойдёт идеально. Суть проста: на отдельном листе (например, Меню) создаём кликабельный список всех вкладок книги. При клике на название — мгновенный переход на нужный лист.

Как это работает:

  • 📌 Плюсы: не требует знания VBA, работает в любом Excel (включая онлайн-версию), легко обновляется вручную.
  • ⚠️ Минусы: при добавлении/удалении листов ссылки придётся править самостоятельно.

Инструкция:

  1. Создайте новый лист и назовите его Меню (или Навигация).
  2. В ячейке A1 введите заголовок, например, Список листов.
  3. Начиная с A2, перечислите названия всех листов книги (кроме текущего).
  4. Выделите ячейку с названием листа (например, A2), нажмите правой кнопкой → Ссылка (или Insert → Hyperlink).
  5. В окне Вставить гиперссылку выберите Местом в документе, укажите нужный лист и ячейку (например, A1).
  6. Повторите для всех названий. Готово!

☑️ Подготовка гиперссылок в Excel

Выполнено: 0 / 4

⚠️ Внимание: Если вы переименуете лист после создания ссылки, гиперссылка сломается. Чтобы избежать этого, используйте динамические ссылки (см. следующий раздел).

2. Динамический список листов с формулой

Ручное обновление ссылок утомительно. Автоматизируем процесс с помощью формулы, которая сама подтягивает названия всех листов книги. Для этого используем функцию GET.WORKBOOK (доступна только в Excel для Windows через Имя → Присвоить).

Альтернативный способ (работает во всех версиях Excel):

  1. Создайте лист Меню и в ячейке A1 введите:
=IFERROR(INDEX(MID(FORMULATEXT(GET.WORKBOOK(1)),FIND("]",FORMULATEXT(GET.WORKBOOK(1)))+1,31),ROW(1:1)),"")

Эта формула извлекает названия листов из структуры книги. Чтобы сделать её рабочей:

  • 🔹 Нажмите Формулы → Диспетчер имён → Создать.
  • 🔹 В поле Имя введите SheetNames, в поле Диапазон — формулу выше.
  • 🔹 Теперь в ячейке A2 листа Меню введите:
=IFERROR(INDEX(SheetNames, ROW()-1), "")

И протяните формулу вниз на столько строк, сколько листов в книге.

⚠️ Внимание: Формула GET.WORKBOOK не работает в Excel Online и Mac-версии. Для этих случаев используйте VBA-скрипт (см. раздел 4).

3. Выпадающий список для быстрого перехода

Если листов много (20+), прокручивать длинный список неудобно. Выпадающий список (Data Validation) решает эту проблему: выбираете название из выпадашки — и сразу переходите на лист.

Как реализовать:

  1. Создайте динамический список названий листов (см. раздел 2) или введите их вручную в столбец A.
  2. Выделите ячейку, где будет выпадающий список (например, C2).
  3. Перейдите в Данные → Проверка данных.
  4. В поле Тип данных выберите Список, в Источник укажите диапазон с названиями листов (например, =$A$2:$A$20).
  5. Нажмите ОК.

Теперь добавьте гиперссылку на выбранный лист. Для этого:

  • 📍 Создайте рядом с выпадающим списком кнопку (вкладка Вставка → Фигуры).
  • 📍 Назначьте кнопке макрос (см. раздел 4) или используйте функцию ГИПЕРССЫЛКА:
=ГИПЕРССЫЛКА("#'"&C2&"'!A1"; "Перейти")

⚠️ Внимание: Если в названии листа есть пробелы или специальные символы (например, Отчёт 2026), формула гиперссылки должна учитывать кавычки:

=ГИПЕРССЫЛКА("#'"&C2&"'!A1"; "Перейти")
Как сделать выпадающий список с поиском?

Для реализации поиска по названиям листов потребуется VBA. Создайте модуль с кодом:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$C$2" Then

Application.EnableEvents = False

' Код для фильтрации списка

Application.EnableEvents = True

End If

End Sub

Этот код позволит вводить символы в ячейку C2 и автоматически фильтровать список листов.

4. Профессиональное меню с кнопками на VBA

Для тех, кто готов использовать макросы, VBA-меню — самое гибкое решение. Оно позволяет:

  • 🎯 Добавлять кнопки с иконками для каждого листа.
  • 🔄 Автоматически обновлять меню при добавлении/удалении листов.
  • 🔍 Реализовать поиск по названиям.

Пошаговая инструкция:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль: Insert → Module.
  3. Скопируйте следующий код:
Sub CreateSheetMenu()

Dim wsMenu As Worksheet, btn As Button, i As Integer, topPos As Integer

Set wsMenu = ThisWorkbook.Sheets("Меню")

wsMenu.Cells.Clear

' Заголовок

wsMenu.Range("A1").Value = "Меню листов"

wsMenu.Range("A1").Font.Bold = True

' Кнопки для каждого листа

topPos = 50

For i = 1 To ThisWorkbook.Sheets.Count

If ThisWorkbook.Sheets(i).Name <> "Меню" Then

Set btn = wsMenu.Buttons.Add(100, topPos, 200, 30)

With btn

.Caption = ThisWorkbook.Sheets(i).Name

.Name = "Btn_" & ThisWorkbook.Sheets(i).Name

.OnAction = "NavigateToSheet"

End With

topPos = topPos + 40

End If

Next i

End Sub

Sub NavigateToSheet()

Dim sheetName As String

sheetName = Replace(Application.Caller, "Btn_", "")

ThisWorkbook.Sheets(sheetName).Activate

End Sub

  1. Закройте редактор VBA и вернитесь в Excel.
  2. Создайте лист Меню (если ещё не создан).
  3. Нажмите Alt + F8, выберите макрос CreateSheetMenu и запустите его.

Готово! Теперь на листе Меню появятся кнопки для перехода на все остальные листы книги. При добавлении нового листа достаточно повторно запустить макрос CreateSheetMenu.

⚠️ Внимание: Файл с макросами нужно сохранять в формате .xlsm. Если вы отправите такой файл коллеге с отключёнными макросами, кнопки работать не будут. Чтобы избежать проблем, добавьте на лист Меню инструкцию по включению макросов:

⚠️ Для работы меню включите макросы: Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы.

5. Панель с поиском и фильтрацией листов

Для книг с 50+ листами даже кнопки становятся неудобны. Решение — поисковая панель, которая фильтрует названия листов по введённым символам. Этот метод требует VBA, но результат стоит усилий.

Код для поисковой панели:

Sub CreateSearchMenu()

Dim wsMenu As Worksheet, txtBox As OLEObject, btn As OLEObject

Set wsMenu = ThisWorkbook.Sheets("Меню")

wsMenu.Cells.Clear

' Поле для поиска

Set txtBox = wsMenu.OLEObjects.Add(ClassType:="Forms.TextBox.1")

With txtBox

.Left = 100: .Top = 50: .Width = 200: .Height = 25

.Object.Text = "Введите название листа..."

.Name = "SearchBox"

End With

' Кнопка "Поиск"

Set btn = wsMenu.OLEObjects.Add(ClassType:="Forms.CommandButton.1")

With btn

.Left = 310: .Top = 50: .Width = 80: .Height = 25

.Object.Caption = "Найти"

.Name = "SearchButton"

End With

' Назначить макросы

wsMenu.Shapes("SearchButton").OnAction = "FilterSheets"

End Sub

Sub FilterSheets()

Dim wsMenu As Worksheet, searchTerm As String

Dim i As Integer, matchCount As Integer, topPos As Integer

Set wsMenu = ThisWorkbook.Sheets("Меню")

' Очистить старые результаты

wsMenu.Cells(3, 1).CurrentRegion.ClearContents

' Получить текст поиска

searchTerm = LCase(wsMenu.OLEObjects("SearchBox").Object.Text)

' Поиск и вывод совпадений

topPos = 100: matchCount = 0

For i = 1 To ThisWorkbook.Sheets.Count

If LCase(ThisWorkbook.Sheets(i).Name) Like "" & searchTerm & "" And _

ThisWorkbook.Sheets(i).Name <> "Меню" Then

wsMenu.Cells(matchCount + 3, 1).Value = ThisWorkbook.Sheets(i).Name

' Добавить гиперссылку

wsMenu.Hyperlinks.Add Anchor:=wsMenu.Cells(matchCount + 3, 1), _

Address:="", SubAddress:="'" & ThisWorkbook.Sheets(i).Name & "'!A1"

matchCount = matchCount + 1

End If

Next i

If matchCount = 0 Then wsMenu.Cells(3, 1).Value = "Листы не найдены"

End Sub

Как пользоваться:

  1. Запустите макрос CreateSearchMenu — на листе появится поле для ввода и кнопка Найти.
  2. Введите часть названия листа (например, отч для Отчёт_2026).
  3. Нажмите Найти — ниже появится список совпадений с кликабельными ссылками.

⚠️ Внимание: Если в названиях листов используются кириллица и латиница (например, Report_2026 и Отчёт_2023), поиск по 202 может не сработать из-за регистра. Чтобы исправить, замените в коде LCase на StrConv(..., vbLowerCase) для корректной обработки Unicode.

Сравнение методов: какой выбрать?

Каждый способ создания меню листов имеет свои плюсы и минусы. В таблице ниже — сравнение по ключевым параметрам:

Метод Сложность Автообновление Работает в Excel Online Требует VBA Подходит для
Гиперссылки вручную ❌ Нет ✅ Да ❌ Нет Менее 10 листов
Динамический список с формулой ⭐⭐ ✅ Да ❌ Нет (GET.WORKBOOK) ❌ Нет 10–30 листов
Выпадающий список ⭐⭐ ✅ Да ✅ Да ❌ Нет 10–50 листов
VBA-меню с кнопками ⭐⭐⭐ ✅ Да (при повторном запуске макроса) ❌ Нет ✅ Да 20–100 листов
Панель с поиском ⭐⭐⭐⭐ ✅ Да ❌ Нет ✅ Да 50+ листов

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

Частые ошибки и как их избежать

Даже в простых методах есть подводные камни. Вот топ-5 ошибок при создании меню листов и способы их решения:

  1. Ссылки не работают после переименования листа.

    Причина: Гиперссылки в Excel привязаны к точному названию листа. Если вы переименовали Отчёт в Отчёт_2026, все ссылки на старый лист сломаются.

    Решение: Используйте динамические формулы (раздел 2) или VBA-меню (раздел 4), которые обновляются автоматически.

  2. Макросы не запускаются.

    Причина: Файл сохранён в формате .xlsx (без поддержки макросов) или отключена безопасность макросов.

    Решение: Сохраните файл как .xlsm и проверьте настройки безопасности (Файл → Параметры → Центр управления безопасностью).

  3. В выпадающем списке отображаются скрытые листы.

    Причина: Формула или макрос не фильтрует скрытые листы.

    Решение: Добавьте условие проверки видимости листа. Для VBA используйте:

    If ThisWorkbook.Sheets(i).Visible = xlSheetVisible Then
  4. Поиск не находит листы с кириллицей.

    Причина: Функция LCase некорректно обрабатывает русские символы.

    Решение: Замените LCase на StrConv(..., vbLowerCase) (см. раздел 5).

  5. Кнопки VBA исчезают после сохранения файла.

    Причина: Кнопки привязаны к конкретному листу, и при его удалении/переименовании они теряются.

    Решение: Сохраняйте резервную копию макроса или используйте код, который восстанавливает кнопки при открытии файла (добавьте вызов CreateSheetMenu в событие Workbook_Open).

FAQ: Ответы на частые вопросы

Можно ли сделать меню листов без VBA?

Да! Используйте методы из разделов 1–3:

  • 🔹 Гиперссылки (раздел 1) — подходит для небольшого количества листов.
  • 🔹 Динамический список с формулой (раздел 2) — обновляется автоматически, но не работает в Excel Online.
  • 🔹 Выпадающий список (раздел 3) — лучший баланс между удобством и простотой.

VBA нужен только для продвинутых функций (кнопки, поиск).

Как скрыть меню от других пользователей?

Есть три способа:

  1. Скрыть лист: Правый клик по вкладке МенюСкрыть. Чтобы вернуть: Главная → Формат → Показать/скрыть → Отобразить лист.
  2. Очень скрыть лист (только через VBA): В редакторе VBA выполните:
    ThisWorkbook.Sheets("Меню").Visible = xlSheetVeryHidden

    Такой лист не отобразится через стандартное меню Excel.

  3. Защитить структуру книги: Рецензирование → Защитить книгу и установите пароль. Это запретит добавлять/удалять/переименовывать листы.
Почему после копирования листа меню ломается?

При копировании листа Excel добавляет к его названию суффикс (например, Отчёт (2)). Если ваше меню использует точные названия листов (гиперссылки или VBA), ссылки на скопированный лист перестанут работать.

Решения:

  • 🔹 Для гиперссылок: обновите ссылки вручную.
  • 🔹 Для VBA-меню: запустите макрос CreateSheetMenu заново.
  • 🔹 Чтобы избежать проблемы, переименуйте скопированный лист до сохранения файла.
Можно ли сделать меню листов в Google Таблицах?

Да, но с ограничениями. В Google Таблицах нет VBA, но есть альтернативы:

  • 🔹 Гиперссылки: Аналогично разделу 1, но используйте формулу:
    =HYPERLINK("#gid="&(MATCH(A2, ARRAYFORMULA(MID(GETWORKBOOKINFO(), FIND("""", GETWORKBOOKINFO())+1, 30)), 0)-1), A2)
    Примечание: GETWORKBOOKINFO — экспериментальная функция, может не работать стабильно.
  • 🔹 Выпадающий список: Создайте список названий листов вручную и используйте Данные → Проверка данных.
  • 🔹 Apps Script: Аналог VBA для Google Таблиц. Позволяет создать кнопки и поиск, но требует знания JavaScript.
Как сделать меню листов с иконками?

Для добавления иконок к кнопкам VBA:

  1. Создайте кнопку через Вставка → Фигуры (например, прямоугольник).
  2. Назначьте кнопке макрос (как в разделе 4).
  3. Чтобы добавить иконку:
    • 🖼️ Вставьте картинку на лист (Вставка → Рисунок).
    • 🔗 Сгруппируйте картинку с кнопкой: выделите оба объекта → правый клик → Группировать.

Для профессиональных иконок используйте Font Awesome через VBA (требуется установка шрифта).