Как заблокировать ячейки проверки данных и разблокировать их при двойном щелчке

#excel #vba

#преуспеть #vba

Вопрос:

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

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

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

     Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel 
    As Boolean)
    If Target.Value <> "" Then
    changeInput = MsgBox("Do you want to unlock the sheet?", vbYesNo   
    vbQuestion, "Unlock sheet")
    If changeInput = vbYes Then
        Dim pass As String
        pass = InputBox("Enter Password")
            If pass <> "password" Then
                MsgBox ("Wrong password")
            Else
                ActiveSheet.Unprotect Password:="password"
                Target.Locked = False
            End If
    End If
    End If
    End Sub

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cel As Range
    ActiveSheet.Unprotect Password:="password"
    For Each cel In Target
    If cel.Value <> "" Then
        cel.Locked = True
    End If
    Next cel
    ActiveSheet.Protect Password:="password"

    End Sub
 

Код работает со всеми остальными ячейками, но я надеялся, что пустые ячейки будут доступны для редактирования, и этот код не работает с ячейками проверки данных.

Ответ №1:

Для ячеек проверки данных попробуйте в вашем событии worksheet_change:

 ActiveSheet.Protect DrawingObjects:=False, Password:="password"
 

вместо того , чтобы

 ActiveSheet.Protect Password:="password"
 

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

Комментарии:

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

2. Вы сначала сняли защиту с листа, ((Вкладка Обзор, снять защиту с листа)?

3. Да, все это сработало. Единственная часть — я все еще не могу дважды щелкнуть ячейки проверки данных и отредактировать.

4. docs.google.com/spreadsheets/d/…