Всем доброго времени суток.
Есть проблемка. Необходимо защитить ячейку от изменений в зависимости от данных в контрольной ячейке. В VBA не силён, написал такой код:
[code]
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Value = "Да" Then
ActiveCell.Offset(0, -4).Locked = True
ElseIf ActiveCell.Value = "Нет" Then
ActiveCell.Offset(0, -4).Locked = False
End If
End Sub
[/code]
Пока защита листа не включена, всё работает, галочка защиты ячейки ставится и снимается. Но как только я ставлю защиту листа (защита без пароля) при смене значения в контрольной ячейке вылетает ошибка: Run-time error '1004' Нельзя установить свойство Locked класса Range. Что я делаю не так?
Есть мысль что перед изменением защиты ячейки надо программно снять защиту листа и потом программно его вернуть. В какую сторону копать? Предложение учить c нуля VBA не принимаются
Есть проблемка. Необходимо защитить ячейку от изменений в зависимости от данных в контрольной ячейке. В VBA не силён, написал такой код:
[code]
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Value = "Да" Then
ActiveCell.Offset(0, -4).Locked = True
ElseIf ActiveCell.Value = "Нет" Then
ActiveCell.Offset(0, -4).Locked = False
End If
End Sub
[/code]
Пока защита листа не включена, всё работает, галочка защиты ячейки ставится и снимается. Но как только я ставлю защиту листа (защита без пароля) при смене значения в контрольной ячейке вылетает ошибка: Run-time error '1004' Нельзя установить свойство Locked класса Range. Что я делаю не так?
Есть мысль что перед изменением защиты ячейки надо программно снять защиту листа и потом программно его вернуть. В какую сторону копать? Предложение учить c нуля VBA не принимаются