我有一个类似于应用程序的 Excel 工作表,带有允许用户“导航”记录的表单控制按钮。首先,上一个,下一个和最后一个适当地循环通过一个工作表记录,显示我的“表单”工作表中的值。
当用户未处于编辑或添加模式时,我想锁定单元格以防止用户修改内容。
我尝试了 Range("A1:O24").Locked = True,但我仍然能够在单元格中输入新值。
有谁知道如何做到这一点?我需要我的 vba 代码能够在用户“导航”时为单元格分配新值,但要防止用户输入新值,除非在添加或编辑模式下。
我有一个类似于应用程序的 Excel 工作表,带有允许用户“导航”记录的表单控制按钮。首先,上一个,下一个和最后一个适当地循环通过一个工作表记录,显示我的“表单”工作表中的值。
当用户未处于编辑或添加模式时,我想锁定单元格以防止用户修改内容。
我尝试了 Range("A1:O24").Locked = True,但我仍然能够在单元格中输入新值。
有谁知道如何做到这一点?我需要我的 vba 代码能够在用户“导航”时为单元格分配新值,但要防止用户输入新值,除非在添加或编辑模式下。
我相信这样做的原因是您需要在单元格实际被锁定之前保护工作表。默认情况下,所有单元格都被格式化为锁定,因此您真正想要做的是将不想锁定的范围设置为 Range().Locked = False,然后将工作表设置为受保护。
如果您希望锁定所有单元格,您只需将工作表设置为受保护
搜索您的条件,无论用户是否处于编辑或添加模式,然后锁定您的范围并最终保护您的工作表。
例如,假设在一种情况下,如果您想锁定从 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"