Как заблокировать ячейки проверки данных и разблокировать при двойном щелчке - PullRequest
1 голос
/ 18 апреля 2019

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

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

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

    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 Ответ

0 голосов
/ 18 апреля 2019

Для ячеек Data-Validation попробуйте в вашем событии worksheet_change:

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

вместо

ActiveSheet.Protect Password:="password"

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

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