|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 amansbj 于 2024-7-3 11:36 编辑
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
ActiveSheet.Unprotect
Cells.Locked = False
Unprotect "123" '解保护
For Each rng In Target
If rng.Value = "完成" Or rng.Value = "停止" And rng.Offset(51, 0).Value <> "" Then
rng.Offset.Resize(1, 58).Locked = True
End If
Next
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Protect "123" '恢复保护
End Sub
备注:此代码是根据论坛老师指点后自己改的(本人不懂VBA)
'当前问题 1. 当前代码更改表格单元格,满足条件锁定单元格后,仅仅是锁定了BE列以后的 单元格 ,并不是锁定A:BF的 单元格。
'当前问题 2. F3 <> "",and BE= "完成" OR "停止",BE3单元格已经被锁定,但更改BA3未锁定单元格时,BE3已锁定的单元格又重新变成未锁定可更改状态 (正常应该锁定A3:BF3)
'当前问题 3. 已经满足条件锁定的单元格(例:A3:BF3已满足锁定条件锁定),但是更改Row4 数据时,Row3 已锁定的单元格又重新变成未锁定可更改状态(同问题2类似)
'当前问题 4. 保护工作表的密码 "123" 不好用,锁定单元格后自动变更为保护工作表状态,但是点击 撤销保护工作表,没有输入 密码的过程
'问题总结: 满足锁定单元格条件后,锁定的不是A:BF的单元格,并且更改其他单元格内容,已锁定单元格又重新变成未锁定状态。 保护工作表密码不好使。
'例如:F3 <> "",and BE= "完成" OR "停止",则 A3:BF3 全部变成锁定状态(包括原F3、G3 。。。。。。绿色单元格,全部变更成为锁定状态)
' 此时更改 Row 4 数据为满足锁定 A4:BF4 的条件,而A3:BF3状态仍然要保持锁定状态,此时A3:BF4处于锁定状态
' 其余未满足条件的(例如 F6 ="", 即使 BE6= "完成" OR "停止"),也不会锁定 A6:BF6, 原F6、G6 。。。。。。绿色单元格,仍然可编辑。
|
|