Excel VBA: защита листа не работает должным образом - PullRequest
1 голос
/ 11 апреля 2011

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

ActiveSheet.Protect Password:="SomePassword", _
AllowInsertingColumns:=False, AllowInsertingRows:=False, _
AllowDeletingColumns:=False, AllowDeletingRows:=False, Contents:=False

Но это не работает, как я ожидаю.Я все еще могу вставлять и удалять строки и столбцы.

Что мне не хватает?Как правильно достичь вышеуказанного?

Ответы [ 3 ]

2 голосов
/ 11 апреля 2011

Я нашел ответ после еще нескольких экспериментов. Вот код:

ActiveSheet.Cells.Locked = False
ActiveSheet.Protect Password:="SomePassword"

Устанавливает для свойства «Заблокировано» всех ячеек на листе значение «Ложь», а затем полностью защищает лист. Это происходит потому, что защита отключает редактирование только для тех ячеек, для которых для параметра «Заблокировано» установлено значение «Истина».

0 голосов
/ 11 апреля 2011

Похоже, что AllowInsertingRows и т. Д. Являются параметрами, доступными только в том случае, если вы заблокируете содержимое с помощью Contents: = True. Это не указано в справочной информации.

Поскольку вы хотите, чтобы содержимое было редактируемым, вы должны пометить все ячейки, которые вы хотите редактировать, как разблокированные (установите для свойства ячейки или диапазона Locked значение false). Затем используйте Protect with Contents: = True.

0 голосов
/ 11 апреля 2011

Насколько я могу судить, вам нужно Contents:=True, чтобы все остальное работало!Конечно, это идет вразрез с вашей потребностью в том, чтобы пользователи могли редактировать содержимое ячеек ... то есть заблокированные ячейки.Так что просто разблокируйте все свои ячейки (Формат | Защита | снимите флажок Заблокировано) перед защитой листа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...