Когда вы защищаете рабочий лист, Excel позволяет вам определять, что пользователь может делать с этим защищенным листом. Используя флажки в диалоговом окне «Защитить лист», вы можете выбрать широкий спектр разрешенных действий. (См. Рис. 1.)

image

Рисунок 1. Диалоговое окно «Защитить лист».

Одно из действий, разрешенных в диалоговом окне «Защитить лист», — это вставка и удаление строк и столбцов на защищенном листе. Это отличная функция для некоторых типов листов. Но в том, как на самом деле работает эта функция, есть что-то странное.

Допустим, вы создали рабочий лист и защищаете его. При этом вы указываете, что люди могут как вставлять, так и удалять строки на защищенном листе. Когда кто-то пытается вставить строку в защищенный лист, она вставляется нормально. Если кто-то пытается удалить строку — даже строку, которую он только что вставил, — действие не разрешено; это невозможно сделать.

Что дает? В диалоговом окне «Защитить лист» вы указали, что люди могут удалять строки, но Excel все равно не позволяет это делать.

Причина, похоже, связана с тем, как Excel реализует защиту рабочего листа. Помните, что защита применяется ко всем ячейкам, которые отформатированы как заблокированные на вкладке «Защита» диалогового окна «Формат ячеек». Если какая-либо ячейка в строке, которую вы пытаетесь удалить, отформатирована как заблокированная, защита рабочего листа не позволит вам удалить строку. Если для всех ячеек в строке снят флажок Заблокировано, то строку можно успешно удалить. (См. Рис. 2.)

image

Рисунок 2. Вкладка «Защита» диалогового окна «Формат ячеек».

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

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

  1. Снимите защиту с листа. Удалить строку. Снова защитите рабочий лист

Эти три шага относительно легко выполнить, используя методы, описанные в других выпусках ExcelTips. Чтобы сделать макрос полезным, вы, вероятно, захотите добавить код, который гарантирует, что пользователь не пытается удалить строки, которые вы не хотите, чтобы они удалить (заголовки, итоги и т. д.).

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (10315) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Inserting_and_Deleting_Rows_in_a_Protected_Worksheet [Вставка и удаление строк в защищенном рабочем листе].