我正在尝试使用BeforeDoubleClick
过程在excel 2010中触发宏。但是,它似乎没有起作用。我已经进行了广泛的搜索,看看是否有其他人遇到过同样的问题,但是我已经尝试了他们的解决方案,但要么不适用,要么不行。代码非常简单,因为我已经将其剥离以便对其进行测试。我的代码是否存在一些愚蠢的错误? (我是Stack和VB noob所以请耐心等待)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Value = "GO" Then Cancel = True
MsgBox ("done")
End Sub
我已经尝试将其设置为public sub,将“Application.EnableEvents = True”放在即时窗口中。工作簿设置为启用所有宏。没有正在运行的插件。我已经通过XLSTART文件夹,它全部为空。甚至在有人建议的时候创建了一个数字签名。是否仍然存在与早期版本的excel的兼容性问题?
当你在工作表中双击时,即使cancel = True,单元格也会正常打开进行编辑。
请帮助
答案 0 :(得分:1)
您在工作表的本地模块(例如Sheet1)中输入的代码将无效地运行。从用户体验的角度来看,你几乎没有发现任何差异,即
如果双击值为“GO”的单元格,则会看到[Done] msgbox,退出后,您将选中单元格但不处于编辑模式(即不将光标插入单元格)
如果单击具有任何其他值的单元格(例如“abc”,甚至是空单元格),则会看到[Done] msgbox,退出后,您将处于单元格编辑模式,并带有写入光标放在当前值的最后一个字母后面,这样您就可以立即开始输入单元格。
话虽如此,即使在1.上面也没有什么阻止你开始打字。通过按下第一个字母,您的“GO”完全被您键入的单个字母所取代 - 因此用户的差异很小并且很容易被忽略,除非您的最终代码更像是重新定位选择,着色单元格等