VBA: защита только объектов-фигур - PullRequest
0 голосов
/ 28 мая 2019

Я прочитал довольно много постов, но не нашел ничего похожего на то, чего я пытаюсь достичь.У меня в основном есть несколько Shape объектов в моей рабочей таблице, которым назначены макросы.Я хотел бы защитить эти объекты с помощью VBA, чтобы пользователи могли взаимодействовать с ними, но никак не редактировать их.Однако я хотел бы, чтобы пользователи (и мой VBA) могли свободно манипулировать остальной частью книги, как им нравится.

Я пробовал ActiveSheet.Protect DrawingObjects:=True, но проблема в том, что удобство использования остальной части приложения также весьма ограничено.Например, у меня есть флажок, который скрывает / скрывает диапазон ячеек, но когда лист защищен, я не могу выполнить макрос и получаю исключение.Есть ли способ защитить только Shape объекты и, в основном, оставить остальную часть книги неограниченной, как если бы лист был незащищенным?

Спасибо, Димитар

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Если вы пропустите другие параметры, вы получите их значения по умолчанию. Вместо этого сделайте что-нибудь подобное:

ActiveSheet.Protect DrawingObjects:=True, _
                    Contents:=False, _
                    Scenarios:=False, _
                    UserInterfaceOnly:=False, _
                    AllowFormattingCells:=True, _
                    AllowFormattingColumns:=True, _
                    AllowFormattingRows:=True, _
                    AllowInsertingColumns:=True, _
                    AllowInsertingRows:=True, _
                    AllowInsertingHyperlinks:=True, _
                    AllowDeletingColumns:=True, _
                    AllowDeletingRows:=True, _
                    AllowSorting:=True, _
                    AllowFiltering:=True, _
                    AllowUsingPivotTables:=True
0 голосов
/ 28 мая 2019

В Обзоре -> Защитить лист -> Вы хотите, чтобы все, кроме «Редактировать объекты», было проверено (чтобы пользователи все еще могли делать все), затем создайте пароль. Это позволяет людям делать все, кроме редактирования объектов - какие фигуры IIRC.

enter image description here

Если вы хотите сделать это с VBA, вы можете быстро записать макрос с аналогичной блокировкой, посмотреть, как он выглядит, и отредактировать его.

Редактировать: Я только что понял, что есть другие объекты, которые вы пытаетесь разрешить. В этом случае я бы рассмотрел событие при изменении, и когда одна из фигур, которые вы пытаетесь защитить, изменилась, нажмите Отменить

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