
有朋友提问关于单元格锁定的问题,
即单元格在首次输入内容后禁止修改。
百度了一下网上的相关资源,
形成今天这个教程,
共享给各位朋友。
本示例要实现的效果为:工作表A列至E列任一单元格,在首次输入时,可以输入任何内容。但是该区域一旦输入内容后,若再想进行数据修改的话,则禁止操作。
1
首先我们将工作表的可编辑区域进行设定。操作如下:
①按【ALT+F11】快捷键,打开VBA窗口,并插入模块;
②在插入的“模块1”中输入如下代码:
Sub auto_open()
ActiveSheet.Unprotect 123 '将工作表保护密码设置为123
ActiveSheet.Protection.AllowEditRanges.Add Title:="区域1", Range:= Columns ("F:XFD")
ActiveSheet.Protect 123
End Sub
上述auto_open模块中的代码,会在打开该文件时自动运行。其主要目的是将当前工作表中的F列至XFD列设置为可编辑区域,然后将工作表保护密码设置为“123”。

2
在VBA窗口中,双击Sheet1工作表,添加其SelectionChange事件相关代码。
①打开VBA窗口,双击工作表;
②输入
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Text <> "" Then
Target.Locked = True
Else
ActiveSheet.Unprotect 123
End If
End Sub
SelectionChange事件中的代码在选择单元格时触发,其 主要目的是对工作表中当前操作的单元格内容进行判断:如果当前单元格内容不为空,则将当前单元格进行锁定,并进行保护;否则,则将工作表解除锁定。

3
经过上述两步操作,已经实现了工作表A列至E列单元格自动锁定的目的。演示如下:

PS:该方法存在缺陷,即选择A至E列,然后按DEL键则可以删除内容,此时可输入新内容,并达到数据修改的目的。
——END——