Всем привет! Есть небольшая задачка и не знаю как с ней справиться. Искала на форуме, но не нашла решение Есть уже защищённый лист с заблокированными на редактирование ячейками. На некоторые из оставшихся достсупных для редактирования ячейках нужно сделать также блокировку на редактирование, но при усовии, если в чекбоксе (на этом же листе) поставлена галочка. Поставить или снять галочку на чекбоксе можно только введя пароль (отличающийся от пароля для снятия защиты этого листа) в появляющемся инпутбоксе. Получается есть три типа ячеек на листе: 1. которые никто не может редактировать (Лист защищён); 2. которые можно редактировать при отсутствии галочки на чекбоксе; 3. которые можно редактировать в любом случае.
И вам привет AnastaciaKomp, второй пункт можно реализовать с помощью проверки данных (с остальными пунктами, думаю, вопросов нет?) Данные -- Проверка данных -- Другой -- В поле для формулы: =НЕ($C$1) (в C1 связь с чекбоксом к примеру)
Behruz A.N., спасибо за помощь! Но это немного не то, что я хотела. Здесь чекбокс связан с защитой листа. А у меня задача, чтобы было как бы два уровня защиты: 1. Стандартная защита ячеек (через "Защиту листа" во вкладке "Рецензирование"); 2. Защита ячеек, если стоит галочка в чекбоксе, которую можно снять/поставить, введя пароль в появляющемся инпутбоксе. И эти две защиты никак не должны быть связаны друг с другом. Разные пароли, галочка/отсутствие её в чекбоксе никак не должно влиять на стандартную защиту листа (п.1), ...
Павел \Ʌ/, да, но как можно сделать так, чтобы галочку на чекбоксе можно было снять/поставить только введя пароль в появляющемся инпутбоксе? Вы знаете решение?
Павел \Ʌ/, не совсем. Защита листа сразу вносит поправки , а с учетом что даже на защищенном листе незащищенные ячейки можно перетащить, то совсем беда. решение с объединением поможет, но вот чекбокс, да еще с паролем без макроса не обойдется.
Нашёл похожую тему на форуме: Установка пароля и снятие при активации Checkbox Там нет решения по конкретно вашей задаче, но, возможно, в купе с вышеперечисленными сообщениями вам удастся справиться с дилеммой
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rr As Range
Set rr = Intersect(ActiveSheet.UsedRange, Target)
If Not rr Is Nothing Then
Dim cl As Range
For Each cl In rr.Cells
If cl.Locked = False Then
If ActiveSheet.CheckBoxes(1).Value <> 1 Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Exit For
End If
End If
Next
End If
End Sub
МатросНаЗебре, спасибо за помощь, но подскажите как это работает? В коде не вижу где задаётся пароль на чекбокс..и нет инпут бокса..( Или вы прислали пример реализации какого-то отдельного куска моей задачки?
Вставьте код в стандартный модуль, в стандартный, не в модуль листа. Назначьте чекбоксу этот макрос. При щелчке на чекбокс будет появляться запрос пароля.
Код
Sub Флажок1_Щелчок()
If ActiveSheet.CheckBoxes(1).Value = 1 Then
Dim password As String
password = InputBox("Введите пароль", "Двухуровневая блокировака ", "Том Круз, висящий на тросе.")
If password <> "Том" Then
ActiveSheet.CheckBoxes(1).Value = False
End If
End If
End Sub
МатросНаЗебре, спасибо большое! Заработало! Подскажите, пожалуйста, а как сделать так, чтобы спрашивал пароль и на отключение галочки? Сделала так, пароль спрашивает, но даже если просто закрыть всплывающий инпутбокс, не вводя пароль, то галочка всё равно снимается
Код
Sub Флажок1_Щелчок()
Dim password As String
password = InputBox("Введите пароль", "Двухуровневая блокировака ", "Том Круз, висящий на тросе.")
If ActiveSheet.CheckBoxes(1).Value = 1 Then
If password <> "Том" Then
ActiveSheet.CheckBoxes(1).Value = False
End If
End If
If ActiveSheet.CheckBoxes(1).Value = 0 Then
If password <> "Том" Then
ActiveSheet.CheckBoxes(1).Value = False
End If
End If
End Sub
Sub Флажок1_Щелчок()
Dim password As String
password = InputBox("Введите пароль", "Двухуровневая блокировака ", "Том Круз, висящий на тросе.")
If password <> "Том" Then
With ActiveSheet.CheckBoxes(1)
.Value = -4145 - .Value
End With
End If
End Sub
МатросНаЗебре, спасибо! Но получается, что если в Формате ячейки снята галочка "Защищаемая ячейка", то я вообще не могу в неё ввести какое-либо значение
Надо как-то макросу дать понять, что ячейки относятся к другому типу проверки блокировки. Например, можно выделить цветом. Тогда макрос примет вид:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rr As Range
Set rr = Intersect(ActiveSheet.UsedRange, Target)
If Not rr Is Nothing Then
Dim cl As Range
For Each cl In rr.Cells
If cl.Locked = False Then
If cl.Interior.Color <> RGB(220, 220, 255) Then
If ActiveSheet.CheckBoxes(1).Value <> 1 Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Exit For
End If
End If
End If
Next
End If
End Sub