Excel:验证,保护和worksheet_beforeDoubleClick之间的冲突

时间:2011-12-27 22:46:23

标签: excel validation vba excel-vba

我正在尝试构建一个受保护的工作表,其中一个单元格具有以下特性:

  1. 双击单元格将其填充为“hello”。
  2. 单元格只能为空或包含“hello”一词。
  3. 所以我决定对单元格进行验证,然后编写worksheet_beforeDoubleClick()事件。

    让我们说它是单元格A1。从空白工作表开始,在B1中输入“hello”,并将A1的验证设置为范围为B1:B2的列表。

    我的双击事件代码如下:

    Private Sub worksheet_beforedoubleclick(ByVal Target As Range, Cancel As Boolean)
    
    If Target.Row = 1 And Target.Column = 1 Then
        Target.Value = "hello"
    End If
    
    End Sub
    

    此代码和验证在工作表未受保护时正常工作;双击时,单元格会填充“hello”。

    但是,一旦工作表受到保护,双击单元格A1会将鼠标指针变为沙漏,直到我按下Esc或单击另一个单元格;单元格中没有填充单词“hello”。

    知道发生了什么事吗?

3 个答案:

答案 0 :(得分:3)

当您保护工作表时,请选中“编辑对象”复选框,它将起作用。不知道为什么,但它会。

答案 1 :(得分:3)

感谢Doug在正确的方向上取得领先。为了将来参考,一个很好的VBA代码段是:

ActiveSheet.Protect UserInterfaceOnly:=True, DrawingObjects:=False

这将保护工作表,但允许宏编辑工作表,以及清除此处描述的冲突。

答案 2 :(得分:1)

尽管以上关于取消保护图形对象的答案有效,但关于用户能够右键单击并编辑图形对象形状的最终解决方案并不总是可以接受的。

我的解决方法是使用单元格左侧的复选框,并添加一个宏,该宏完成了我双击动作的原本操作。