Вы можете защитить все рабочие листы от пользовательских изменений, но при этом позволить сценариям VBA вносить изменения с помощью параметра «UserInterfaceOnly». Этот обходной путь позволяет запускать любой сценарий VBA на рабочих листах без необходимости каждый раз защищать и снимать защиту:
Dim ws as Worksheet
Dim pwd as String
pwd = "" ' Put your password here
or Each ws In Worksheets
ws.Protect Password:=pwd, UserInterfaceOnly:=True
Next ws
Снятие защиты - то же самое, что решение, предложенное Беном Хоффштейном:
Dim ws as Worksheet
Dim pwd as String
pwd = "" ' Put your password here
For Each ws In Worksheets
ws.Unprotect Password:=pwd
Next ws
Вы можете получить доступ к этому макросу с помощью кнопки / ярлыка. В Excel 2010 вы щелкаете правой кнопкой мыши на панели быстрого доступа и выбираете «Настроить панель быстрого доступа». В раскрывающемся меню для выбора команд выберите «Макросы». Затем щелкните сценарий VBA, который вы создали для защиты (или снятия защиты). Наконец, нажмите кнопку «Добавить>>», а затем «ОК», чтобы сохранить ее.