我有一个Excel工作表,就像一个应用程序,带有表单控制按钮,允许用户“浏览”记录。 First,Previous,Next&最后一个循环适当地通过其中一个工作表记录,在我的“表单”工作表中显示值。
当用户未处于编辑或添加模式时,我想锁定单元格以防止用户修改内容。
我尝试了Range(“A1:O24”)。Locked = True,但我仍然可以在单元格中键入新值。
任何人都知道如何做到这一点?我需要我的vba代码才能在用户'导航'时为单元格分配新值,但是为了防止用户输入新值,除非在添加或编辑模式下。
答案 0 :(得分:5)
我认为原因是您需要在单元格实际锁定之前保护工作表。所有单元格都被格式化为默认锁定,因此您真正想要的是设置您不想锁定的范围Range()。Locked = False然后将工作表设置为受保护。
如果您希望锁定所有单元格,则只需将工作表设置为受保护
即可答案 1 :(得分:3)
搜索您的条件,无论用户是处于编辑模式还是添加模式,然后锁定您的范围并最终保护您的工作表。
比方说,例如,在一种情况下,如果要锁定从A1到I50范围内的单元格,则下面是代码:
Worksheets("Enter your sheet name").Range("A1:I50").Locked = True
ActiveSheet.Protect Password:="Enter your Password"
在另一种情况下,如果您已经有受保护的工作表,请按照以下代码进行操作:
ActiveSheet.Unprotect Password:="Enter your Password"
Worksheets("Enter your sheet name").Range("A1:I50").Locked = True
ActiveSheet.Protect Password:="Enter your Password"