Excel单元格输入数据锁定问题! 80
展开全部
这代码并不是输入数据后自动锁定单元格,而是选中单元格就自动锁定。除了不能处理合并单元格外,代码还有二个问题。一是保护工作表的密码和取消工作表的密码不相同,二是保护工作表的代码在条件语句内逻辑上有问题,当选中的单元格为空时就相当于解除保护,这时就可以改有数据的单元格了,无法达到你的要求。下面代码能满足输入数据后就不能修改并且解决了合并单元格出错问题。(注意在写代码前将整个表格的单元格属性取消锁定勾选)
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="123456"
If Target(1) <> "" Then Target.MergeArea.Locked = 1
ActiveSheet.Protect Password:="123456"
End Sub
展开全部
这代码并不是输入数据后自动锁定单元格,而是选中单元格就自动锁定。除了不能处理合并单元格外,代码还有二个问题。一是保护工作表的密码和取消工作表的密码不相同,二是保护工作表的代码在条件语句内逻辑上有问题,当选中的单元格为空时就相当于解除保护,这时就可以改有数据的单元格了,无法达到你的要求。下面代码能满足输入数据后就不能修改并且解决了合并单元格出错问题。(注意在写代码前将整个表格的单元格属性取消锁定勾选)
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="123456"
If Target(1) <> "" Then Target.MergeArea.Locked = 1
ActiveSheet.Protect Password:="123456"
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="123456"
If Target(1) <> "" Then Target.MergeArea.Locked = 1
ActiveSheet.Protect Password:="123456"
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加一个遍历选中的区域来判断。
dim c as range
for each c in target
if c 小于号 大于号 "" then(自己改改,我这输入不进去这俩符号。。。)
target.locked=1
activesheet.protect password:=12345
exit for
endif
next
就是这样就可以了。
dim c as range
for each c in target
if c 小于号 大于号 "" then(自己改改,我这输入不进去这俩符号。。。)
target.locked=1
activesheet.protect password:=12345
exit for
endif
next
就是这样就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
ActiveSheet.Unprotect Password:="123456"
For Each c In Target
If c = "" Then
Target.Locked = False
Else
Target.Locked = True
End If
Exit For
Next c
ActiveSheet.Protect Password:="123456"
End Sub
Dim c As Range
ActiveSheet.Unprotect Password:="123456"
For Each c In Target
If c = "" Then
Target.Locked = False
Else
Target.Locked = True
End If
Exit For
Next c
ActiveSheet.Protect Password:="123456"
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将第三行 If Target <> "" Then 改为 If Target(1, 1) <> "" Then
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询