2017-06-04 85 views
0

我在Excel 2013中看到一个看似简单的问题,但找不到答案。下面我描述了所有的细节。非常感谢您提供任何帮助。Excel双击功能区按钮启动宏

来龙去脉问题:

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

我的问题:我想,当我双击功能区上的图标宏1只启动。单击应该什么都不做。

我对这个问题的研究:找到答案我已经通过了许多有关VSTO插件和宏指南的msdn材料。前者的问题在于,我只是VSTO的初学者,后者发现只有“Worksheet_BeforeDoubleClick”事件关注单元格激活,而不是功能区按钮激活。

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

+0

想一想,您可以创建一个环境计数器变量并在开始时增加它,并用IF语句检查计数器是否为2,然后运行宏并将计数器变量重新设置回0。这种方式宏只会在第二次点击时执行实际任务。不知道如何纳入,但它可能是你的起点。要声明环境变量,请通过链接--- https://technet.microsoft.com/library/ee156595.aspx – sktneer

+0

出于兴趣,为什么不单击单击? –

+0

@TimWilliams我的包含Macro1的功能区部分也有一个Macro2按钮,它位于它的正下方。问题是,虽然Macro2是一个简单的过滤工具,但Macro1会删除所有选定的工作表。你可能会看到这是怎么回事:}我想避免意外删除。此外,我用Excel工作很多,我的自定义功能区很拥挤(这就是为什么这样的安置是必要的)。 – Prazeodyn

回答

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用于比较):

小组测试仪() 昏暗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 

有趣!

+0

我投了票,但它似乎我不能给你互联网点(至少不明显,因为这是弹出消息告诉我)。不过,我感到适当的谢意。所以谢谢。这工作完美无缺:} 编辑:哦,现在我看到一个更新。感谢您的阐述,我会牢记:} – Prazeodyn