Защита определенной ячейки в зависимости от значения другой ячейки - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть таблица Excel, в которой я хочу защитить ячейки в столбце I, если соответствующая ячейка столбца H <> «да».Я нашел код путем поиска в Google, но он защитит все ячейки столбца I. Было бы здорово, если бы кто-нибудь мне помог.

Option explicit

Sub unprotected
Me.unprotect password:= "abc"
End sub

Sub protect
Me.protect userinterfaceonly:= true ,password:= "abc"
End sub

Private Sub Worksheet_change(ByVal Target As Range)

Dim Crow as Long

Call Unprotected

xrow = Target.Row

If not (intersect(Target, range("H3:H1000")) is nothing then
Cells(xrow, "I").locked = (Ucase(trim(cells(xrow, "H").value))<>"yes")
End if
Call protect
End sub

1 Ответ

0 голосов
/ 21 декабря 2018

Попробуйте это:

Option Explicit

Const PW As String = "abc" '<< use a constant for fixed/shared values

Private Sub Worksheet_change(ByVal Target As Range)

    Dim rng As Range, c As Range
    'find changed cells in range of interest
    Set rng = Application.Intersect(Target, Me.Range("H3:H1000"))
    If Not rng Is Nothing Then
        UnprotectMe
        'process each cell
        For Each c In rng.Cells
            Me.Cells.Cells(c.Row, "I").Locked = _
                 (UCase(Trim(Me.Cells(c.Row, "H").Value)) <> "YES")
        Next c
        ProtectMe
    End If

End Sub

Sub UnprotectMe()
    Me.Unprotect Password:=PW
End Sub

Sub ProtectMe()
    Me.protect userinterfaceonly:=True, Password:=PW
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...