Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何在数据输入后锁定行的节_Excel_Vba - Fatal编程技术网

Excel 如何在数据输入后锁定行的节

Excel 如何在数据输入后锁定行的节,excel,vba,Excel,Vba,我早上花了相当一部分时间在Excel中的vba中,使用我在这个网站上遇到的代码片段,但我现在运气不好。我已经设法让一些复杂的部件(或者对我来说很复杂,我绝对不是专家!)工作,但我遇到了麻烦 我们正在创建一个工作表,供员工输入信息。它目前有19个标题栏(A-S),员工数据输入从第20行开始。有2500排 我们试图实现的是,当工作人员到达其行的L列并向其中输入数据时,该行在单元格A-L之间受密码保护。M-S仍应可编辑,但A-L应锁定为编辑 锁定应该只影响用户正在处理的行。因此,下一个用户可以在下面的

我早上花了相当一部分时间在Excel中的vba中,使用我在这个网站上遇到的代码片段,但我现在运气不好。我已经设法让一些复杂的部件(或者对我来说很复杂,我绝对不是专家!)工作,但我遇到了麻烦

我们正在创建一个工作表,供员工输入信息。它目前有19个标题栏(A-S),员工数据输入从第20行开始。有2500排

我们试图实现的是,当工作人员到达其行的L列并向其中输入数据时,该行在单元格A-L之间受密码保护。M-S仍应可编辑,但A-L应锁定为编辑

锁定应该只影响用户正在处理的行。因此,下一个用户可以在下面的行中输入他们的信息,它将再次锁定在L上,一直重复到2500

到目前为止,我所做的一切都导致整个工作表在L中输入时被锁定。最接近我的目标是设法让一行锁定L中的数据输入,但它锁定了整行,而不仅仅是A-L(然后我被锁定,不得不重新开始)

如果有一个弹出框警告用户在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

必须将此代码插入到要保护的工作表中。

到目前为止您尝试了什么?我最近一直在尝试以下内容,但它锁定了整个文档而不是A-L。我也知道它不会影响第22行>第2500行,但我希望如果我能使其在一行上工作,我可以扩展它。私有子工作表_Change(ByVal Target As Range)如果Target.Column=12,则为Range(“A21、B21、C21、D21、E21、F21、G21、H21、I21、J21、K21、L21”)。Locked=True ActiveSheet。Protect DrawingObject:=True,Contents:=True,Scenarios:=True End If End SubAlso,作为对我先前答案的补充,您应该知道,锁定同时应用于单元级别和图纸级别。默认情况下,每个单元格都是“锁定”的。您必须手动解锁A20到L1048576之间的范围。这可以在右键单击上述范围>单元格格式>保护,然后取消选中“锁定”后完成。非常好,谢谢!它现在表现得很好。这真的很有帮助,所以再次感谢你。