灰色单元格Excel

时间:2015-08-10 11:52:23

标签: excel excel-vba vba

我的问题如下所述。

我有两个选项的下拉列表:XY(表编号1)。 当我在表号1中选择X时,用户不应该选择表号2中列出的列表流程名称。 当我在表号1中选择Y时,用户无法从表格中显示的process1 typeprocess2 typeprocess3 type列表中进行选择3号(OPT1应与支持表中的A - E - K相对应。

以灰色突出显示的那些单元格应该是不可编辑的。其余部分应该可以自由修改。

以下是示例file

我想在没有VBA的情况下解决它(如果可能的话)。

1 个答案:

答案 0 :(得分:0)

如果您对仅仅格式化(而不是锁定单元格)感到满意,可以使用标准条件格式在没有VBA的情况下完成:

e.g。选择单元格B5,单击条件格式/新规则/使用公式确定要格式化的单元格。对于公式,请输入=$B$3="Y"并选择您要应用的格式。

重复其他细胞的变异。

如果要锁定单元格以停止用户编辑,则必须使用VBA。将以下代码放在工作表代码区域中。请注意,您必须右键单击/格式化单元格/保护/锁定才能解锁输入单元格,以便更改此内容。

Private Sub Worksheet_Change(ByVal Target As Range)

    If Range("B3") = "X" Then

        ActiveSheet.Unprotect

        Range("B4").Locked = True
        Range("B4").Interior.Color = RGB(128, 128, 128) 'no such thing as vbgGray

        Range("B5").Locked = False
        Range("B5").Interior.Color = vbYellow

        Range("B6").Locked = False
        Range("B6").Interior.Color = vbYellow

        Range("B7").Locked = False
        Range("B7").Interior.Color = vbYellow

        ActiveSheet.Protect

    ElseIf Range("B3") = "Y" Then

        ActiveSheet.Unprotect

        Range("B4").Locked = False
        Range("B4").Interior.Color = vbYellow

        Range("B5").Locked = True
        Range("B5").Interior.Color = RGB(128, 128, 128)

        Range("B6").Locked = True
        Range("B6").Interior.Color = RGB(128, 128, 128)

        Range("B7").Locked = True
        Range("B7").Interior.Color = RGB(128, 128, 128)

        ActiveSheet.Protect

    End If

End Sub