如何基于excel中的下拉选择锁定行中的特定单元格

如何基于excel中的下拉选择锁定行中的特定单元格,excel,conditional-formatting,validation,vba,Excel,Conditional Formatting,Validation,Vba,我已经设置了条件格式,以便特定选项具有唯一的颜色,现在我想创建一个宏,以便基于颜色对应的单元格可以编辑,并且该下拉列表行中的所有其他单元格都是只读的 例如,A5被选为“Toyota”,这意味着只有第五行中的E5可以编辑,因为A5中的格式与E2匹配 单元格屏幕截图: 您可以使用Change事件来修改单元格的Locked属性,如下所示 Private Sub Worksheet_Change(ByVal Target As Range) Dim rw As Range, rHdr As Ra

我已经设置了条件格式,以便特定选项具有唯一的颜色,现在我想创建一个宏,以便基于颜色对应的单元格可以编辑,并且该下拉列表行中的所有其他单元格都是只读的

例如,A5被选为“Toyota”,这意味着只有第五行中的E5可以编辑,因为A5中的格式与E2匹配

单元格屏幕截图:


您可以使用
Change
事件来修改单元格的
Locked
属性,如下所示

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rw As Range, rHdr As Range, cl As Range

    Me.Unprotect
    If Target.Column = 1 Then
        Set rHdr = Me.UsedRange.Rows(1)

        For Each rw In Target.Rows
            If rw.Cells(1, 1) <> "" Then
                For Each cl In rHdr.Cells
                    Me.Cells(rw.Row, cl.Column).Locked = Not (cl.Value Like rw.Cells(1, 1) & "*")
                Next
            Else
                rw.Locked = True
            End If
            rw.Cells(1, 1).Locked = False
        Next
    End If
    Me.Protect
End Sub
Private子工作表\u更改(ByVal目标作为范围)
变暗rw As范围、rHdr As范围、cl As范围
我,解除保护
如果Target.Column=1,则
设置rHdr=Me.UsedRange.Rows(1)
对于Target.Rows中的每个rw
如果rw.单元格(1,1)“,则
对于rHdr.单元格中的每个cl
Me.Cells(rw.Row,cl.Column).Locked=Not(cl.Value像rw.Cells(1,1)和“*”)
下一个
其他的
rw.Locked=True
如果结束
rw.单元格(1,1).Locked=False
下一个
如果结束
保护我
端接头

UsedRange从第一个使用的行开始,而不是A1,因此在这种特殊情况下,
UsedRange.Rows(2)
将是第3行。。。