使用VBA在Excel中locking行
我有一个Excel表,列A到F由不同的用户填写。 一旦一行完成,另一个用户(控制用户)在列G中input“done”。一旦用户在coulmn G中input“done”,我想要一个VBA脚本来locking整行(列A到G),这样没有人可以更改任何行条目。 这可能使用VBA脚本?
我们必须从所有单元格开始不受保护,并locking表单
在工作表代码区域中input以下事件macros :
Private Sub Worksheet_Change(ByVal Target As Range) Dim N As Long N = Target.Row If Intersect(Target, Range("G:G")) Is Nothing Then Exit Sub If Target.Text <> "Done" Then Exit Sub ActiveSheet.Unprotect Range("A" & N & ":G" & N).Locked = True ActiveSheet.Protect End Sub
因为它是工作表代码,所以安装和自动使用非常简单:
- 右键单击Excel窗口底部附近的选项卡名称
- select查看代码 – 这会popup一个VBE窗口
- 粘贴东西,closuresVBE窗口
如果您有任何疑问,请先在试用工作表上尝试。
如果您保存该工作簿,该macros将与它一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx
要删除macros:
- 调出上面的VBE窗口
- 清除代码
- closuresVBE窗口
要了解有关macros的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解有关事件macros(工作表代码)的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/event.htm
macros必须启用这个工作!