1

我有一个类似于应用程序的 Excel 工作表,带有允许用户“导航”记录的表单控制按钮。首先,上一个,下一个和最后一个适当地循环通过一个工作表记录,显示我的“表单”工作表中的值。

当用户未处于编辑或添加模式时,我想锁定单元格以防止用户修改内容。

我尝试了 Range("A1:O24").Locked = True,但我仍然能够在单元格中输入新值。

有谁知道如何做到这一点?我需要我的 vba 代码能够在用户“导航”时为单元格分配新值,但要防止用户输入新值,除非在添加或编辑模式下。

4

2 回答 2

5

我相信这样做的原因是您需要在单元格实际被锁定之前保护工作表。默认情况下,所有单元格都被格式化为锁定,因此您真正想要做的是将不想锁定的范围设置为 Range().Locked = False,然后将工作表设置为受保护。

如果您希望锁定所有单元格,您只需将工作表设置为受保护

于 2013-06-14T15:13:00.440 回答
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"
于 2013-09-18T09:34:00.747 回答