Excel: конфликт между проверкой, защитой и рабочим листом_beforeDoubleClick - PullRequest
3 голосов
/ 28 декабря 2011

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

  1. Двойной щелчок по ячейке заполняет ее словом "привет".
  2. ячейка может быть только пустой или содержать слово "привет".

Поэтому я решил поставить проверку на ячейку и написать событие worksheet_beforeDoubleClick().

Скажем, это ячейкаA1.Начиная с чистого листа, в B1 я ввожу «привет» и устанавливаю проверку A1 в виде списка с диапазоном B1: B2.

Мой код события двойного щелчка выглядит следующим образом:

Private Sub worksheet_beforedoubleclick(ByVal Target As Range, Cancel As Boolean)

If Target.Row = 1 And Target.Column = 1 Then
    Target.Value = "hello"
End If

End Sub

Этот код и проверка корректно работают, пока лист не защищен;при двойном щелчке ячейка заполняется «привет».

Однако, если лист защищен, двойной щелчок по ячейке А1 превращает указатель мыши в песочные часы, пока я не нажму клавишу Esc или щелкну другую ячейку;клетка не заполняется словом "привет".

Есть идеи, что происходит?

Ответы [ 3 ]

3 голосов
/ 16 ноября 2012

Спасибо, Даг, за лидерство в правильном направлении.Для дальнейшего использования хороший фрагмент VBA для этого:

ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=False

Это защитит лист, но позволит макросам редактировать лист, а также разрешит конфликт, описанный здесь.

3 голосов
/ 28 декабря 2011

Когда вы защищаете лист, установите флажок «Редактировать объекты», и он будет работать. Не знаю почему, но так и будет.

1 голос
/ 13 сентября 2018

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

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

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