Как в Excel сделать кнопку «Назад»: 3 рабочих метода с примерами

Работа с большими таблицами в Microsoft Excel часто превращается в лабиринт: переходишь по листам, фильтрам, сводным таблицам — и вдруг понимаешь, что потерял исходную точку. Стандартного сочетания Ctrl+Z здесь недостаточно: оно отменяет действия, но не возвращает на предыдущий лист или диапазон. Решение — собственная кнопка «Назад», которая работает как в браузере: одним кликом возвращает к предыдущему состоянию.

Такой инструмент экономит время при анализе данных, особенно если вы используете многоуровневые отчёты или часто переключаетесь между листами. В этой статье разберём три метода создания кнопки возврата: от простейших гиперссылок до автоматизированных макросов на VBA. Каждый способ адаптирован под разные задачи — выберите подходящий исходя из вашего уровня владения Excel и требований к функционалу.

⚠️ Внимание: Если вы работаете с защищёнными файлами (.xlsm с макросами), перед настройкой кнопки проверьте разрешения в Файл → Сведения → Защита книги. Блокировка макросов может сделать кнопку нерабочей.

Метод 1: Гиперссылка как простейшая кнопка «Назад»

Самый быстрый способ — использовать встроенную функцию гиперссылок. Он не требует знаний VBA и подходит для статичных таблиц, где нужно возвращаться на конкретный лист или ячейку.

Алгоритм действий:

  1. Выделите ячейку, где будет располагаться кнопка (например, A1).
  2. Перейдите на вкладку Вставка → Гиперссылка (или нажмите Ctrl+K).
  3. В окне «Связать с» выберите местом в документе.
  4. Укажите лист и ячейку, куда должна вести ссылка (например, Лист1!A1).
  5. В поле «Текст» введите ← Назад или любой другой.

Чтобы гиперссылка выглядела как кнопка:

  • 🎨 Форматирование: Выделите ячейку, нажмите Главная → Формат → Формат ячеек и выберите границы/заливку.
  • 🔗 Подсказка: Добавьте всплывающую подсказку через Правка гиперссылки → Подсказка (например, «Вернуться к сводной таблице»).
  • 📌 Закрепление: Если кнопка должна быть всегда видна, закрепите область (Вид → Закрепить области).

⚠️ Внимание: Гиперссылки не запоминают историю переходов — они всегда ведут в одно и то же место. Если вам нужно динамическое возвращение (например, на предыдущий лист из цепочки), используйте методы 2 или 3.

📊 Какой способ возврата в Excel вы используете чаще?
Гиперссылки
Кнопки с макросами
Горячие клавиши
Ручной переход по листам

Метод 2: Кнопка с макросом для возврата на предыдущий лист

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

Инструкция по настройке:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. В окне проекта найдите вашу книгу и откройте модуль: Вставка → Модуль.
  3. Вставьте следующий код:
    Dim LastSheet As String
    
    

    Sub GoBack()

    If LastSheet <> "" Then

    Sheets(LastSheet).Activate

    End If

    End Sub

    Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)

    LastSheet = Sh.Name

    End Sub

  4. Закройте редактор VBA и вернитесь в Excel.
  5. Добавьте кнопку: Вставка → Иллюстрации → Фигуры (выберите прямоугольник).
  6. Нарисуйте кнопку на листе, кликните по ней правой кнопкой и выберите Назначить макросGoBack.

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

  • 📝 Отслеживание: Макрос Workbook_SheetDeactivate запоминает название листа при каждом переходе.
  • ↩️ Возврат: Кнопка с макросом GoBack активирует последний сохранённый лист.
  • 🔄 Ограничение: История хранится только для одного шага назад (несколько уровней требуют массива, см. метод 3).

Включить поддержку макросов (сохранить как .xlsm)|Открыть редактор VBA (Alt+F11)|Вставить код в модуль|Добавить кнопку на лист|Назначить макрос GoBack-->

Метод 3: Продвинутая кнопка с историей переходов

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

Код для редактора VBA:

Dim SheetHistory() As String

Dim HistoryPointer As Integer

Dim MaxHistory As Integer: MaxHistory = 10 ' Максимальное количество шагов

Sub InitializeHistory()

ReDim SheetHistory(1 To MaxHistory)

HistoryPointer = 0

End Sub

Sub Workbook_Open()

Call InitializeHistory

End Sub

Sub Workbook_SheetDeactivate(ByVal Sh As Object)

If HistoryPointer < MaxHistory Then

HistoryPointer = HistoryPointer + 1

SheetHistory(HistoryPointer) = Sh.Name

Else

For i = 1 To MaxHistory - 1

SheetHistory(i) = SheetHistory(i + 1)

Next i

SheetHistory(MaxHistory) = Sh.Name

End If

End Sub

Sub GoBackAdvanced()

If HistoryPointer > 1 Then

HistoryPointer = HistoryPointer - 1

Sheets(SheetHistory(HistoryPointer)).Activate

ElseIf HistoryPointer = 1 Then

Sheets(SheetHistory(1)).Activate

End If

End Sub

Особенности реализации:

Параметр Описание Значение по умолчанию
MaxHistory Максимальное количество сохраняемых шагов 10
HistoryPointer Указатель текущей позиции в истории 0 (при инициализации)
Workbook_Open Сброс истории при открытии книги Выполняется автоматически
GoBackAdvanced Макрос для кнопки возврата

⚠️ Внимание: При использовании этого метода не сохраняйте книгу с включёнными макросами в формате .xlsx — только .xlsm, иначе код будет утерян. Также проверьте настройки безопасности макросов в Файл → Параметры → Центр управления безопасностью.

Дополнительные функции для кнопки «Назад»

Базовую кнопку можно усовершенствовать, добавив:

  • 🔍 Визуальные эффекты: Изменение цвета кнопки при наведении (через Формат фигуры → Эффекты).
  • ⏱️ Автосохранение: Макрос, который сохраняет книгу перед возвратом (добавьте строку ThisWorkbook.Save в GoBackAdvanced).
  • 📊 Индикатор истории: Ячейка, отображающая текущий лист и количество шагов назад (пример кода ниже).

Пример кода для индикатора (добавьте в модуль):

Sub UpdateHistoryIndicator()

Dim IndicatorCell As Range

Set IndicatorCell = Sheets("Главная").Range("B1") ' Ячейка для индикатора

IndicatorCell.Value = "Текущий лист: " & ActiveSheet.Name & _

" | Шагов назад: " & HistoryPointer

End Sub

Чтобы индикатор обновлялся автоматически, добавьте вызов UpdateHistoryIndicator в конец макросов Workbook_SheetDeactivate и GoBackAdvanced.

Как сделать кнопку «Вперёд»?

Для реализации кнопки «Вперёд» понадобится второй массив ForwardHistory() и дополнительная логика в макросе Workbook_SheetDeactivate. Пример кода:

Dim ForwardHistory() As String

Dim ForwardPointer As Integer

Sub GoForward()

If ForwardPointer > 0 Then

Sheets(ForwardHistory(ForwardPointer)).Activate

ForwardPointer = ForwardPointer - 1

End If

End Sub

Полную реализацию смотрите в этом гайде (условная ссылка).

Альтернативные способы навигации в Excel

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

  • 🔄 Журнал действий: Файл → Сведения → Управление книгой → Журнал изменений (доступно в Excel 365).
  • 📑 Список листов: Правый клик по стрелкам прокрутки листов → выпадающий список всех листов книги.
  • ⌨️ Горячие клавиши: Ctrl+PgUp/Ctrl+PgDn для переключения между листами.

Сравнение методов навигации:

Метод Преимущества Недостатки Сложность
Гиперссылка Простота, не требует VBA Статичная, не запоминает историю
Макрос (1 шаг) Динамический возврат на последний лист Ограничен 1 шагом, требует .xlsm ⭐⭐
Макрос (история) Полноценная история переходов Сложный код, возможны ошибки ⭐⭐⭐
Горячие клавиши Быстро, без настроек Только для листов, не для ячеек

Распространённые ошибки и их решение

При настройке кнопки «Назад» пользователи сталкиваются с типичными проблемами:

1. Кнопка не работает после сохранения файла

  • Причина: Файл сохранён в формате .xlsx вместо .xlsm.
  • Решение: Пересохраните книгу с поддержкой макросов: Файл → Сохранить как → Тип файла: Книга Excel с поддержкой макросов (*.xlsm).

2. Макрос выдаёт ошибку «Подпрограмма не определена»

  • Причина: Опечатка в названии макроса или модуля.
  • Решение: Проверьте регистр символов в коде и имени кнопки (например, GoBackgoback).

3. Кнопка возвращает не на тот лист

  • Причина: В коде Workbook_SheetDeactivate не учитываются скрытые листы.
  • Решение: Добавьте проверку:
    If Sh.Visible = xlSheetVisible Then
    

    ' Сохраняем только видимые листы

    End If

⚠️ Внимание: Если в книге используются сводные таблицы с фильтрами, кнопка «Назад» не восстановит состояние фильтров — только вернёт на лист. Для сохранения фильтров потребуется дополнительный код (пример: запись параметров в скрытые ячейки).

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

Можно ли сделать кнопку «Назад» для возврата к предыдущей ячейке, а не листу?

Да, для этого нужно модифицировать макрос, чтобы он запоминал адрес ячейки (ActiveCell.Address). Пример кода:

Dim LastCell As String

Sub GoBackToCell()

If LastCell <> "" Then Range(LastCell).Select

End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

LastCell = Target.Address

End Sub

Почему кнопка перестаёт работать после добавления новых листов?

Скорее всего, в коде жёстко прописаны названия листов (например, Sheets("Лист1")). Используйте динамические ссылки через ActiveSheet.Name или обновите массив истории после изменений в книге.

Как сделать кнопку «Назад» в Excel Online?

В веб-версии Excel макросы не поддерживаются. Альтернатива — использовать гиперссылки или закладки (Вставка → Закладка). Для динамической навигации потребуется Power Automate (платный инструмент от Microsoft).

Можно ли назначить кнопке «Назад» горячие клавиши?

Да, через макрос:

  1. Откройте редактор VBA (Alt+F11).
  2. В модуле добавьте строку: Application.OnKey "^+z", "GoBack" (это назначит Ctrl+Shift+Z).
  3. Поместите вызов этой строки в процедуру Workbook_Open.

⚠️ Горячие клавиши срабатывают только при открытой книге.

Как перенести кнопку «Назад» в другую книгу?

Скопируйте:

  1. Модуль с кодом (Alt+F11 → перетащите модуль в новую книгу).
  2. Саму кнопку (выделите, скопируйте как рисунок, вставьте в новую книгу и назначьте макрос заново).

Проверьте, что в новой книге включена поддержка макросов.