Работа с десятками листов в Microsoft Excel часто превращается в хаос: приходится листать вкладки в поисках нужного отчёта, сводной таблицы или справочника. Потерянное время на клики мышью и случайные ошибки при переключении — знакомая история? Решение есть: меню листов — удобный инструмент для быстрой навигации, который можно реализовать даже без знания программирования.
В этой статье вы найдёте 5 проверенных способов создать меню листов — от элементарного списка с гиперссылками до профессиональной панели с кнопками и поиском. Мы разберём каждый метод с пошаговыми инструкциями, скриншотами и нюансами, которые экономят часы работы. А если вы боитесь сломать файл — не переживайте: все решения обратимы и не требуют сохранения в формате .xlsm (хотя для макросов это обязательно).
Перед тем как приступить, ответьте на вопрос: какой тип меню вам нужен?
1. Простейшее меню: список листов с гиперссылками
Если вам нужно быстрое решение без формул и макросов, этот метод подойдёт идеально. Суть проста: на отдельном листе (например, Меню) создаём кликабельный список всех вкладок книги. При клике на название — мгновенный переход на нужный лист.
Как это работает:
- 📌 Плюсы: не требует знания VBA, работает в любом Excel (включая онлайн-версию), легко обновляется вручную.
- ⚠️ Минусы: при добавлении/удалении листов ссылки придётся править самостоятельно.
Инструкция:
- Создайте новый лист и назовите его
Меню(илиНавигация). - В ячейке
A1введите заголовок, например,Список листов. - Начиная с
A2, перечислите названия всех листов книги (кроме текущего). - Выделите ячейку с названием листа (например,
A2), нажмите правой кнопкой →Ссылка(илиInsert → Hyperlink). - В окне
Вставить гиперссылкувыберитеМестом в документе, укажите нужный лист и ячейку (например,A1). - Повторите для всех названий. Готово!
☑️ Подготовка гиперссылок в Excel
⚠️ Внимание: Если вы переименуете лист после создания ссылки, гиперссылка сломается. Чтобы избежать этого, используйте динамические ссылки (см. следующий раздел).
2. Динамический список листов с формулой
Ручное обновление ссылок утомительно. Автоматизируем процесс с помощью формулы, которая сама подтягивает названия всех листов книги. Для этого используем функцию GET.WORKBOOK (доступна только в Excel для Windows через Имя → Присвоить).
Альтернативный способ (работает во всех версиях Excel):
- Создайте лист
Менюи в ячейке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) решает эту проблему: выбираете название из выпадашки — и сразу переходите на лист.
Как реализовать:
- Создайте динамический список названий листов (см. раздел 2) или введите их вручную в столбец
A. - Выделите ячейку, где будет выпадающий список (например,
C2). - Перейдите в
Данные → Проверка данных. - В поле
Тип данныхвыберитеСписок, вИсточникукажите диапазон с названиями листов (например,=$A$2:$A$20). - Нажмите
ОК.
Теперь добавьте гиперссылку на выбранный лист. Для этого:
- 📍 Создайте рядом с выпадающим списком кнопку (вкладка
Вставка → Фигуры). - 📍 Назначьте кнопке макрос (см. раздел 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-меню — самое гибкое решение. Оно позволяет:
- 🎯 Добавлять кнопки с иконками для каждого листа.
- 🔄 Автоматически обновлять меню при добавлении/удалении листов.
- 🔍 Реализовать поиск по названиям.
Пошаговая инструкция:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте новый модуль:
Insert → Module. - Скопируйте следующий код:
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
- Закройте редактор VBA и вернитесь в Excel.
- Создайте лист
Меню(если ещё не создан). - Нажмите
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
Как пользоваться:
- Запустите макрос
CreateSearchMenu— на листе появится поле для ввода и кнопкаНайти. - Введите часть названия листа (например,
отчдляОтчёт_2026). - Нажмите
Найти— ниже появится список совпадений с кликабельными ссылками.
⚠️ Внимание: Если в названиях листов используются кириллица и латиница (например, 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 ошибок при создании меню листов и способы их решения:
- Ссылки не работают после переименования листа.
Причина: Гиперссылки в Excel привязаны к точному названию листа. Если вы переименовали
ОтчётвОтчёт_2026, все ссылки на старый лист сломаются.Решение: Используйте динамические формулы (раздел 2) или VBA-меню (раздел 4), которые обновляются автоматически.
- Макросы не запускаются.
Причина: Файл сохранён в формате
.xlsx(без поддержки макросов) или отключена безопасность макросов.Решение: Сохраните файл как
.xlsmи проверьте настройки безопасности (Файл → Параметры → Центр управления безопасностью). - В выпадающем списке отображаются скрытые листы.
Причина: Формула или макрос не фильтрует скрытые листы.
Решение: Добавьте условие проверки видимости листа. Для VBA используйте:
If ThisWorkbook.Sheets(i).Visible = xlSheetVisible Then - Поиск не находит листы с кириллицей.
Причина: Функция
LCaseнекорректно обрабатывает русские символы.Решение: Замените
LCaseнаStrConv(..., vbLowerCase)(см. раздел 5). - Кнопки VBA исчезают после сохранения файла.
Причина: Кнопки привязаны к конкретному листу, и при его удалении/переименовании они теряются.
Решение: Сохраняйте резервную копию макроса или используйте код, который восстанавливает кнопки при открытии файла (добавьте вызов
CreateSheetMenuв событиеWorkbook_Open).
FAQ: Ответы на частые вопросы
Можно ли сделать меню листов без VBA?
Да! Используйте методы из разделов 1–3:
- 🔹 Гиперссылки (раздел 1) — подходит для небольшого количества листов.
- 🔹 Динамический список с формулой (раздел 2) — обновляется автоматически, но не работает в Excel Online.
- 🔹 Выпадающий список (раздел 3) — лучший баланс между удобством и простотой.
VBA нужен только для продвинутых функций (кнопки, поиск).
Как скрыть меню от других пользователей?
Есть три способа:
- Скрыть лист: Правый клик по вкладке
Меню→Скрыть. Чтобы вернуть:Главная → Формат → Показать/скрыть → Отобразить лист. - Очень скрыть лист (только через VBA): В редакторе VBA выполните:
ThisWorkbook.Sheets("Меню").Visible = xlSheetVeryHiddenТакой лист не отобразится через стандартное меню Excel.
- Защитить структуру книги:
Рецензирование → Защитить книгуи установите пароль. Это запретит добавлять/удалять/переименовывать листы.
Почему после копирования листа меню ломается?
При копировании листа 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:
- Создайте кнопку через
Вставка → Фигуры(например, прямоугольник). - Назначьте кнопке макрос (как в разделе 4).
- Чтобы добавить иконку:
- 🖼️ Вставьте картинку на лист (
Вставка → Рисунок). - 🔗 Сгруппируйте картинку с кнопкой: выделите оба объекта → правый клик →
Группировать.
- 🖼️ Вставьте картинку на лист (
Для профессиональных иконок используйте Font Awesome через VBA (требуется установка шрифта).