我早上的大部分时间都在 Excel 中的 vba 中使用我通过本网站遇到的一些零碎代码,但我现在没有运气。我已经设法让一些复杂的(或无论如何对我来说很复杂,我绝对不是专家!)部分工作,但我在这里遇到了砖墙。
我们正在创建一个工作表供员工输入信息。它目前有 19 个标题栏 (A – S),员工数据输入从第 20 行开始。有 2500 行。
我们试图实现的是,当员工到达他们所在行的 L 列并向其中输入数据时,该特定行在单元格 AL 之间受到密码保护。MS 应该仍然是可编辑的,但 AL 应该被锁定为编辑。
锁应该只影响用户正在处理的行。所以下一个用户可以在下面的行中输入他们的信息,它会再次锁定 L,重复这个直到 2500。
到目前为止我所尝试的一切都导致整个工作表在 L 中输入时被锁定。我最接近我的目标是设法让一行锁定 L 中的数据输入,但它锁定了整行,不只是AL(然后我被锁定并不得不重新开始)。
如果有一个弹出框警告用户在 L 中输入数据将锁定前面的单元格会很方便,但这并不重要,我可以在顶部写一个注释。
有任何想法吗?我一直在兜圈子,感觉就像是几个小时。
在此先感谢您的帮助!
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 12 Then
Range("A21,B21,C21,D21,E21,F21,G21,H21,I21,J21,K21,L21").Locked = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub
我想你可以从这样的事情开始:
Private Sub Worksheet_Change(ByVal Target As Range)
Const PASSWORD = "PASSWORD"
Dim Row As Long
If Target.Column = 12 Then
Target.Parent.Unprotect PASSWORD
Row = Target.Row
Target.Parent.Range("A" & Row & ":" & "L" & Row).Locked = True
Target.Parent.Protect PASSWORD
End If
End Sub
必须将此代码插入要保护的工作表中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句