0

我正在尝试使用该BeforeDoubleClick过程在 excel 2010 中触发宏。但是,它似乎不起作用。我进行了广泛的搜索,看看其他人是否遇到过同样的问题,有几个人遇到过,但我尝试了他们的解决方案,要么不适用,要么不起作用。代码非常简单,因为我已将其剥离以进行测试。我的代码有什么愚蠢的错误吗?(我是 Stack 和 VB 菜鸟,所以请耐心等待)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Value = "GO" Then Cancel = True
    MsgBox ("done")
End Sub

我尝试将其设置为公共子,将“Application.EnableEvents = True”放在即时窗口中。工作簿设置为启用所有宏。没有加载项正在运行。我已经浏览了 XLSTART 文件夹,它都是空的。甚至按照某人的建议创建了一个数字签名。是否仍然是与以前版本的 excel 的兼容性问题?

此外,当您在工作表中双击时,即使取消 = True,单元格也会正常打开以进行编辑。

请帮忙

4

1 回答 1

1

您发布的代码在输入工作表的本地模块(例如 Sheet1)时将毫无缺陷地工作。从用户体验的角度来看,您几乎没有注意到任何区别,即

  1. 如果你双击一个值为“GO”的单元格,你会看到 [Done] 消息框,退出后你会留下选中的单元格但不在编辑模式下(即插入光标不在单元格中)

  2. 如果您单击具有任何其他值的单元格(例如“abc”,甚至是一个空单元格),您会看到 [Done] 消息框,退出后您将处于单元格编辑模式,写入光标位于最后一个字母之后当前值,因此您可以立即开始在单元格中输入。

话虽如此,即使在 1. 以上没有什么可以阻止您开始打字。通过按下第一个字母,您的“GO”将完全替换为您键入的单个字母 - 因此用户的差异很小并且很可能被忽略,除非您的最终代码更像是重新定位选择,为单元格着色等等

于 2013-08-06T13:49:27.487 回答