【问题标题】:Excel: conflict between validation, protection, and worksheet_beforeDoubleClickExcel:验证、保护和 worksheet_beforeDoubleClick 之间的冲突
【发布时间】:2018-09-13 11:13:33
【问题描述】:

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

  1. 双击单元格会用“hello”填充它。
  2. 单元格只能为空白或包含单词“hello”。

所以我决定对单元格进行验证,并编写一个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”。

知道发生了什么吗?

【问题讨论】:

    标签: validation vba excel


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      感谢 Doug 在正确方向上的引领。为了将来参考,一个很好的 VBA sn-p 是:

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

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

      【讨论】:

        【解决方案3】:

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

        我的解决方法是使用单元格左侧的复选框并添加一个宏来执行我最初的双击操作。

        【讨论】:

          猜你喜欢
          • 2016-02-28
          • 1970-01-01
          • 1970-01-01
          • 2021-03-10
          • 2017-08-30
          • 1970-01-01
          • 1970-01-01
          • 2011-02-03
          • 1970-01-01
          相关资源
          最近更新 更多