根据值范围锁定动态表单元格

根据值范围锁定动态表单元格

我想将 Excel 表用于动态目的。

需要在 A 列中输入扫描条形码获得的各种产品编号。我想确保如果输入(扫描)的产品编号以“200”开头,则输入产品编号后单元格会自动锁定。如果输入任何其他产品编号,单元格不会被锁定。

我还想将“200”以外的产品代码系列的颜色改为红色。

例如:

Column A
200412311     - Cell " A1" gets locked
200142390     - Cell " A2" gets locked
200412345     - Cell " A3" gets locked
200154672     - Cell " A4" gets locked
200234578     - Cell " A5" gets locked
100452433     - Cell is not locked
100452412     - Cell is not locked

答案1

我相信按照这些步骤你就能得到你想要的。

  1. 选择 A 列。右键单击并选择Format Cells...。在“保护”选项卡上,取消选中Locked。单击“确定”。
  2. 在 A 列仍处于选中状态的情况下,单击Conditional Formatting“主页”功能区,然后选择New Rule...。从那里选择Use a formula to determine which cells to format.您可以输入公式=LEFT(A1,3)<>"200"并将格式设置为红色文本。单击确定。
  3. 在“审阅”功能区中,单击Protect Sheet。选择您想要的保护设置。
  4. Alt+F11打开 VBA 编辑器。在 VBA 项目资源管理器窗格中,双击您正在处理的工作表的模块。
    在此处输入图片描述
    这将打开一个文本编辑器窗格。在该窗格中粘贴以下代码。
    Private Sub Worksheet_Change(ByVal 目标作为范围)
    昏暗的 c 作为范围
    如果不相交(目标,范围(“A:A”))为空,则
    对于目标单元格中​​的每个 c
        如果 Len(CStr(c.Value)) >= 3 则
            如果 Left(c.Value, 3) = "200" 那么
                我.解除保护
                c.锁定 = True
                我保护
            万一
        万一
    下一个
    万一
    子目录结束
    
    这将锁定以“200”开头的单元格,而其他单元格保持解锁状态。

相关内容