У меня есть защищенный паролем лист, с некоторыми незапертыми ячейками, которые пользователь может использовать.Невозможно изменить значение ячейки с кодом в защищенном листе
Как только пользователь изменяет любое значение, он автоматически должен вносить изменения в другие разблокированные ячейки с помощью кода vba. Это отлично работает, если лист разблокирован, но не защищен.
пример кода:
В Workbook_Open() Я установил UserInterfaceOnly атрибут TRUE:
Sheets("Sheet Name").Protect Password:="123456", UserInterFaceOnly:=True, Contents:=True
Лист Код: Set date.01 значение в date.01 если date.02 клетки изменения
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("date.01")) Is Nothing Then
Worksheets("Sheet Name").Range("date.02") = Target
End If
End Sub
клетки "date.01" и "date.02" разблокированы.
Почему я не могу их обновить?
EDIT:
ли SelectionChange событие лучший вариант, чтобы изменить значения ячеек? И это нормально, чтобы выполнить задание так:
Worksheets("Sheet Name").Range("date.02") = Target
Я могу видеть, что изменения вступили в силу, когда исходная клетка получает фокус обратно.
Что я действительно хочу сделать, так это дать группе ячеек в разных листах одно и то же значение в любое время, когда любой из них будет изменен пользователем.
РЕШЕНИЕ.
Мой плохо, я использовал
Worksheet_SelectionChange
вместо
Worksheet_Change
Я также должен был использовать это, чтобы предотвратить какие-либо ошибки.
Application.EnableEvents = False
<CODE>
Application.EnableEvents = True
Не нужно было использовать UserInterfaceOnly, так как все ячейки/диапазоны разблокированы.
Попробуйте 'Sheets ("Sheet Name") Защитить Пароль:. = "123456", UserInterFaceOnly: = False, Содержание: = True ' – R3uK
То же самое, это не меняется. Я забыл сказать, что у ячейки есть правило валидации для дат. – giorgiline
Вызывает ли это какое-либо сообщение? Добавьте сообщение об ошибке для своего правила проверки, таким образом вы узнаете, исходит ли ошибка! – R3uK