根据其他单元格值保护特定单元格

时间:2018-12-21 07:21:41

标签: excel vba excel-vba

我有一个excel电子表格,如果H列的各个单元格是,则我想保护I列的单元格。 我通过谷歌搜索找到了一个代码,但是该代码将保护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 :(得分:0)

尝试一下:

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