首页 > 解决方案 > 根据另一个单元格的值更新单元格保护

问题描述

我正在尝试在实验室中跟踪数据。

目标。当单元格 P3 中的值更改为“是”时,单元格 Q3:AE3 将被锁定。但是,如果单元格 P3 中没有出现“是”,则单元格 Q3:AE3 被解锁。

我需要针对每个 P 值所在的行遍历 P 列锁定/解锁单元格。
例如,如果 P36 = “Yes”,Q36:AE36 将被锁定。

编辑:此代码适用于 P3 行。我怎样才能使这个循环通过 P3:P500?

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("P3") = "Yes" Then
        Range("Q3:AE3").Locked = True
    ElseIf Range("P3") = "No" Then
        Range("Q3:AE3").Locked = False
    ElseIf Range("P3") = "" Then
        Range("Q3:AE3").Locked = False
    End If
End Sub

标签: excelvbaloops

解决方案


这将处理 P 列中正在更改的任意数量的值。根据需要提供您的密码。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    'did any cells in column P change
    If Not Intersect(Target, Me.Range("P1").EntireColumn) Is Nothing Then
    
        Me.Unprotect "password"
        
        Dim cell As Range
        For Each cell In Intersect(Target, Me.Range("P1").EntireColumn)
        
            Me.Range("Q" & cell.Row & ":AE" & cell.Row).Locked = UCase$(cell.Value) = "YES"
            
        Next
        
        Me.Protect "password"
    
    End If
    
End Sub

推荐阅读