返回目录:excel表格制作
一个EXCEL模板,当过了规定时间就“锁住”某些单元格,不允许用户再修改。 针对这位学员的需求,我写了如下两段代码:
代码一:可以在一个单元格输入内容后进行判断,如果晚于规定时间,那么清除单元格内容,并“锁死”单元格。
简单说明下这几行的含义:
If Now() >= Range("B3").Value Then ’判断现在时间是否超过了规定时间
Application.EnableEvents = False ’先不触发任何事件,这样能避免进入死循环
Range(Target.Address).Value = "" ’将改变内容的单元格清空
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ’如果是,那么就保护工作表
MsgBox ("过时间,不能输入了!") ’提示信息
End If
注:这段代码是和工作表对应的,所以要放到工作表“背后”的VBE里。
代码二:当打开一个EXCEL文件时,会自动判断是否超过规定时间,如果是,那么“锁死”单元格。这个应用场景应该更贴近实际。
这几行代码的含义就不讲了,跟第一段代码差不多,区别在于不会出现死循环:
If Now() >= #3/8/2018 9:24:00 PM# Then
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
MsgBox ("过时间,不能输入了!")
End If
注:这段代码是和工作簿对应的,所以要放在"ThisWorkBook"里。
希望这个分享能对有这个需求的朋友有帮助!
作者:王安