在工作表单元格中输入数据后,该单元格就被锁定,不能再编辑。
打开VBE,在工程资源管理器中双击该工作表名称打开其代码模块,在其中输入下面的代码:
'假设整个工作表的Locked=False
Private Sub Worksheet_Change(ByVal Target As Range)Dim rCell As RangeDim ans As VbMsgBoxResultFor Each rCell In TargetWith rCellIf Len(.Value) > 0 Thenans = MsgBox("输入正确吗?" & vbCrLf & vbCrLf & _vbTab & .Value & " (" & .Address(False, False) & ")" & vbCrLf & vbCrLf & _"输入数值后将不能编辑这个单元格.", vbYesNo, "单元格锁定通知")If ans = vbYes ThenIf Me.ProtectContents ThenMe.Unprotect Password:="123" '首先撤销保护.Locked = TrueMe.ProtectPassword:="123"Else.ClearContentsActiveCell.Offset(-1, 0).Select '重新选择数据输入单元格End IfEnd IfEnd WithNext rCell
End Sub
这里,假设锁定工作表的密码为“123”。
可以使用右击单元格的方式,来重置想要重新输入数据的单元格。在该工作表代码模块中添加下面的代码:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)Dim rCell As RangeDim ans As VbMsgBoxResultFor Each rCell In Target.CellsWith rCellIf Len(.Value) > 0 Thenans = MsgBox("你想要重置这个单元格吗?" & vbCrLf & vbCrLf & _vbTab & .Value & " (" & .Address(False, False) & ")", vbYesNo, "单元格锁定通知")If ans = vbYes ThenIf ActiveSheet.ProtectContents Then ActiveSheet.Unprotect Password:="123" '首先撤销保护Application.EnableEvents = False.ClearContents.Locked = FalseApplication.EnableEvents = TrueActiveSheet.Protect Password:="123"End IfEnd IfEnd WithNextCancel = True
End Sub
这样,右击想要重新输入数据的单元格,会弹出一个消息框,询问你是否要重置这个单元格,如果点击“是”,则会清空该单元格并供输入新数据。
效果如下图1所示。