Защита листа помогает ограничить случайное редактирование формул. Скрытие формулы в строке ввода работает вместе с защитой листа.

Разрешим менять количество и цену, оставив сумму защищённой.

Что подготовить

Подготовьте учебный «Заказы» с формулой =B2*C2 в D2. Известный учебный пароль в примере — demo. Не используйте его для рабочих данных.

Пример предназначен для своего листа с известным паролем. Взлом или обход неизвестной защиты не требуется для настройки корректного отчёта.

Код и порядок выполнения

Option Explicit
Sub ProtectOrders()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Заказы")
    ws.Unprotect Password:="demo"
    ws.Cells.Locked = True
    ws.Range("B2:C5").Locked = False
    ws.Range("D2:D5").FormulaHidden = True
    ws.Protect Password:="demo", UserInterfaceOnly:=True
End Sub

Locked определяет, какие ячейки будут недоступны после Protect. До включения защиты изменение этого свойства само по себе не запрещает ввод. FormulaHidden скрывает формулу защищённой ячейки.

UserInterfaceOnly ограничивает пользовательское редактирование, сохраняя возможность изменений из кода при данном режиме. Его нужно задавать заново после открытия книги по предусмотренной процедуре, а не считать навсегда сохранённой настройкой.

Учебный код: Защита листа и скрытие формул через VBA.
Учебный код: Защита листа и скрытие формул через VBA.

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

Значения заказов видны как прежде. Для защищённой D2 формула не показывается в строке ввода; редактирование B2:C5 разрешено.
Значения заказов видны как прежде. Для защищённой D2 формула не показывается в строке ввода; редактирование B2:C5 разрешено.

Значения заказов видны как прежде. Для защищённой D2 формула не показывается в строке ввода; редактирование B2:C5 разрешено.

Ограничения и частые ошибки

Защита листа не заменяет шифрование файла и управление доступом к документу. Записанный в VBA пароль также нельзя считать скрытым секретом. Назначение примера — защита структуры от случайной правки.

Не разблокируйте все ячейки без проверки: это разрешит менять и формулы. Не блокируйте весь лист без выделения областей ввода: пользователь потеряет возможность работать с отчётом.

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

Проверка перед рабочим запуском

  • B2:C5 доступны для ввода.
  • D2:D5 защищены.
  • Формула D2 скрыта только при защите.
  • После открытия настройки для кода восстановлены.

Сначала выполните пример на учебной копии с указанными именами листов и диапазонами. Сравните исходные данные и результат, затем сохраните проверенный вариант процедуры.

Продолжить изучение: Автозапуск макроса при открытии книги и активации листа, Форматирование ячеек VBA: цвет, выравнивание и AutoFit, Как скрыть и показать столбцы в VBA.

Разберитесь с макросами вместе с преподавателем

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

Начните с бесплатного вводного урока: 45 минут, один на один, без обязательств. Обсудите цель и попробуйте формат. Решение о продолжении — после занятия.

Записаться на бесплатный урок