Excel 使用条件格式锁定/解锁单元格

Excel 使用条件格式锁定/解锁单元格,excel,formatting,locking,conditional,Excel,Formatting,Locking,Conditional,如何使用条件格式根据另一个单元格(A2)中的值(是/否)锁定/解锁单元格(A1) 网上有很多资源展示了如何做到这一点。这里有一篇文章帮助我解释了这一点: 如果链路失效,其要点如下: 要执行所描述的操作,需要创建一个事件过程,每当工作表的内容发生更改时,Excel都会调用该过程。首先打开Visual Basic窗口(按Alt+F11)。您应该在左上角的窗格中看到s树视图;在该视图中找到工作表的名称,然后双击该名称。这将在右侧的大窗格中打开与该工作表关联的代码模块 在大窗格的顶部,您将看到两个下拉

如何使用条件格式根据另一个单元格(A2)中的值(是/否)锁定/解锁单元格(A1)

网上有很多资源展示了如何做到这一点。这里有一篇文章帮助我解释了这一点:

如果链路失效,其要点如下:

要执行所描述的操作,需要创建一个事件过程,每当工作表的内容发生更改时,Excel都会调用该过程。首先打开Visual Basic窗口(按Alt+F11)。您应该在左上角的窗格中看到s树视图;在该视图中找到工作表的名称,然后双击该名称。这将在右侧的大窗格中打开与该工作表关联的代码模块

在大窗格的顶部,您将看到两个下拉列表。最初,左侧的将显示(常规),而右侧的将显示(声明)。单击左侧列表右端的三角形箭头,然后选择“工作表”

Excel将自动添加SelectionChange事件过程的“框架”。这不是我们想要的,但不会伤害任何东西

Excel还会将右侧下拉列表中的选择更改为SelectionChange。打开该列表并选择“更改”。Excel将添加第二个事件过程,如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

闪烁光标将被定位在这个骨架的空白行上。 您希望向工作表_更改过程添加代码,以检查G2单元格的内容,并更改G3:G66范围的状态。这需要一条IF语句和两条赋值语句:

Private Sub Worksheet_Change(ByVal Target As Range)
    If ActiveSheet.Cells(2, 7).Text = "X" Then
        ActiveSheet.Range(Cells(3, 7), Cells(66, 7)).Locked = True
    Else
        ActiveSheet.Range(Cells(3, 7), Cells(66, 7)).Locked = False
    End If
End Sub
IF语句测试单元格G2的当前内容(Cells()方法使用行2和列号7来标识单元格;列G是第七列)。两个赋值语句更改范围的锁定属性;一个锁上电池,另一个解锁

当然,如果您的代码更复杂,您应该避免每次工作表上的任何内容发生更改时都运行它。为了避免过于频繁地执行代码,可以使用传递给事件过程的目标参数:

If Intersect(ActiveSheet.Cells(2, 7), Target) _
    Is Not Nothing Then
此条件语句使用Intersect()函数确定目标中是否包含单元格G2(ActiveSheet.Cells(2,7))

因此,完整的事件过程如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(ActiveSheet.Cells(2, 7), Target) Is Not Nothing Then
        If ActiveSheet.Cells(2, 7).Text = "X" Then
            ActiveSheet.Range(Cells(3, 7), Cells(66, 7)).Locked = True
        Else
            ActiveSheet.Range(Cells(3, 7), Cells(66, 7)).Locked = False
        End If
    End If
End Sub
在“完整事件过程”中,
Else
可能以
False
结尾