所以我创建了一个工作表,允许用户使用按钮在表格中创建新行来输入数据。我只希望表和列中的特定单元格可以修改。
我之前使用过与下面类似的功能,但是现在它没有用。
在这种情况下,我希望用户可以修改从B7到表格末尾的范围,以及要锁定的其余列。
Function ProtectionOn()
Sequencer.Select
Cells.Locked = True
Range("B7", Range("B1048576").End(xlUp)).Locked = False
ActiveSheet.Protect Password:="test"
End Function
我发现这种方法最简单的方法是使用电子表格末尾的xlup。任何帮助修复我的功能将不胜感激!谢谢!
答案 0 :(得分:0)
相反功能,使用sub。
Sub ProtectionOn()
Sequencer.Select
Cells.Locked = True
Range("B7", Range("B1048576").End(xlUp)).Locked = False
ActiveSheet.Protect Password:="test"
End Sub
如果您需要子程序,请尝试这样。
主要程序。
Sub test()
ProtectionOn Sheets("Sequencer")
End Sub
Sub ProtectionOn(Ws As Worksheet)
With Ws
.Unprotect Password:="test" '<~~ add code
.Cells.Locked = True
.Range("B7", .Range("B1048576").End(xlUp)).Locked = False
.Protect Password:="test"
End With
End Sub
答案 1 :(得分:0)
我们假设我们在表单序列器中有table1请创建:
Sub ProtectionOn(sh As Worksheet)
Dim i As Long
With sh
i = .Range("Table1[#All]").Rows.Count
.Cells.Locked = True
.Range("b7", .Range("Table1[#All]").End(xlDown)).Locked = False
.Protect Password:="test"
End With
End Sub
'and call it from:
Sub call_protect()
ProtectionOn Sheets("Sequencer")
End Sub