Excel双击一个function区button来启动macros

Excel 2013中有一个看似简单的问题,我找不到答案。 下面我描述了所有的细节。 非常感谢您的帮助。

围绕这个问题的情况:

  1. 我在Excel中创build了一个包含Macro1的“QuickMacro.xlsm”工作簿。
  2. 其次,我添加了自定义function区(通过Excel工具,而不是在VSTO),并在该function区上添加了所述的macros。
  3. 现在每当我打开一个excel工作簿时,我的计算机上的所有工作簿中都有一个快速的macros(并且所述macros的工作簿是隐藏的,所以我没有看到它,它不会干扰我的工作)

我的问题:我想Macro1只有当我双击function区上的图标启动。 单击应该什么也不做。

我对这个问题的研究:为了find一个答案,我已经通过了很多有关VSTO插件和macros指南的msdn材料。 与前者的问题是,我只是VSTO的初学者,后者,我发现只有“Worksheet_BeforeDoubleClick”事件,关于细胞激活,而不是function区button激活。

问:最后,我的问题是:怎么办? 有办法只用Excel来做,还是需要开始学习高级VSTO? 此外,我也希望从哪里开始挖掘解决这个问题的任何一般技巧(除了我已经广泛分析的msdn网站)。 任何书可能?

通过将其分配给工作表上的形状进行testing(所以你的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()一个侧面说明。 我看到一篇文章说这两个expression式有不同的精度,而且[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 

结束小组

输出:

  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 

有趣!