0

在excel中双击一个单元格会发生什么?

我想知道这一点,因为我必须控制在我的 excel 查看器中的单元格中输入数据,在这种情况下,除非他双击它,否则不允许用户在单元格中输入任何内容。

我使用以下代码来保护活动工作表在不双击的情况下输入数据:

myActiveWorksheet.Protect("password", Type.Missing, true, true, Type.Missing, true,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 false, false, true);

它工作正常,做我想要的。

但是问题发生在用户双击单元格时。我在 ActiveWorkbook 的 SheetBeforeDoubleClick 事件处理程序中编写了以下代码以取消保护工作表,以便用户可以在单元格中输入他的数据:

myActiveWorksheet.Unprotect("password");
target.Locked = false;

以及 SheetChange 事件处理程序中的以下代码以再次保护它:

target.Locked = true;
myActiveWorksheet.Protect("password", Type.Missing, true, true, Type.Missing, true,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    false, false, true);

但是,第二个保护代码(我的意思是 SheetChange 事件处理程序中的那个)不能正常工作,因此用户只需单击一下就可以输入每个单元格。

我对原因有两个猜测:

1)在双击excel的过程中发生了一些事情,导致工作表不受保护。

2)SheetChange 事件处理程序的目标参数不指向更改的单元格。

4

1 回答 1

1

艾瓦...

我找到了我的解决方案。我应该使用

myActiveWorksheet.Cells.Locked = true;

代替

target.Locked = true;

在 SheetChange 事件处理程序中。

于 2013-03-02T10:37:10.773 回答