Как установить пароль, когда кто-то нажимает на незащищенную таблицу в Excel и создать кнопку для редактирования - PullRequest
0 голосов
/ 25 августа 2010

Я заблокировал ячейки в электронной таблице, используя эти строки кода.

Range("A1:D23").Select
Selection.Locked = True
ActiveSheet.Protect Contents:=True

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

Моя проблема в том, что он не запрашивает пароль. Как мне сначала установить пароль, когда он хочет снять защиту. Во-вторых, я хочу передать информацию о строке, которую он выбрал для изменения, и хочу создать кнопку, когда соседняя ячейка доступна только для чтения. используется для редактирования.

1 Ответ

1 голос
/ 25 августа 2010

Я получил первую часть вашего вопроса. Вам необходимо указать аргумент пароля как часть метода Protect рабочего листа:

Sub lockSheet()
    With ActiveSheet

        'Check sheet is not already protected
        If Not .ProtectContents Then

            'Clear any existing lock settings
            .Cells.Locked = False

            .Range("A1:D23").Locked = True
            .Protect Contents:=True, Password:="pw"
        End If
    End With
End Sub

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

Пароль явно виден в виде открытого текста. Если вам нужна какая-либо степень защиты, вам также нужно применить пароль к проекту VBA .

Чтобы ответить на вторую часть вашего вопроса, с изменениями в вашем комментарии:

Private Sub Worksheet_SelectionChange(ByVal target As Range)
    If target.Locked Then
        With ActiveSheet
            .Unprotect
            If Not .ProtectContents Then
                target.Locked = False
                .Protect Contents:=True, Password:="pw"
            End If
        End With
    End If
End Sub

Это необходимо добавить в модуль рабочего листа.

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