我在Excel 2013中有一个看似简单的问题,我无法找到答案。下面我描述了所有细节。非常感谢您的任何帮助。
围绕问题的情况:
我的问题:我希望Macro1仅在双击功能区上的图标时启动。单击就不应该做任何事情。
我对这个问题的研究:为了找到答案,我在VSTO上添加了许多msdn资料,并添加了ins和宏教程。前者的问题是我只是VSTO的初学者,后者我发现只有“Worksheet_BeforeDoubleClick”事件会影响单元格激活,而不是功能区按钮激活。
问题:最后,我的问题是:怎么做?有没有办法只使用Excel或我是否需要开始学习高级VSTO?此外,我还要感谢有关从何处开始挖掘以解决此问题的任何一般提示(除了我已广泛分析的msdn网站)。也许还有书吗?
答案 0 :(得分:1)
通过将其指定给工作表上的形状进行测试(因此您的Sub声明可能看起来不同)。
Sub MenuAction()
Static t As Double
'0.25 sec double-click interval
If [NOW()] - t > (1 / 24 / 60 / 60 / 4) Then
t = [NOW()]
Exit Sub
End If
Debug.Print "double-click"
'run your code here
End Sub
编辑:使用[NOW()]
与Now()
的附注。我看到一篇帖子说这两个表达式的精度不同,[NOW()]更精确。
例如(还包括Time
用于比较):
Sub Tester() Dim i,x
For i = 1 To 10
'make a delay...
For x = 1 To 3000#
DoEvents
Next x
Debug.Print Time * 1, Now() * 1, [NOW()] * 1
Next i
End Sub
输出:
Time Now() [NOW()]
0.494270833333333 42891.4942708333 42891.4942753472
0.494270833333333 42891.4942708333 42891.4942768519
0.494270833333333 42891.4942708333 42891.4942782407
0.494270833333333 42891.4942708333 42891.4942795139
0.494270833333333 42891.4942708333 42891.4942810185
0.494282407407407 42891.4942824074 42891.4942824074
0.494282407407407 42891.4942824074 42891.494283912
0.494282407407407 42891.4942824074 42891.4942851852
0.494282407407407 42891.4942824074 42891.4942865741
0.494282407407407 42891.4942824074 42891.4942880787
有趣!