VBA:来自personal.xlsb的BeforeDoubleClick

时间:2018-05-29 08:32:22

标签: excel vba

我想执行以下操作:我希望能够在personal.xlsb中修改BeforeDoubleClick事件。 这是我想到的一个例子:我想,当我双击一个单元格时,它的backgroundcolour设置为绿色。通常我必须在Workbook Workbook_BeforeDoubleClick事件中执行此操作,但是我希望能够在任何工作簿和我的personal.xlsb中执行此操作,以便我可以为BeforeRightClick事件分配不同的方法。理想情况下,我会有一个带有几个按钮的用户窗体,每个按钮为BeforeRightClick事件分配不同的方法。

这可能吗?我无法在网上找到解决方案。

祝你好运!

2 个答案:

答案 0 :(得分:0)

有可能 - 要做到这一点,您需要捕获Application个事件。

此处提供了示例代码的完整说明: http://www.cpearson.com/excel/AppEvent.aspx

答案 1 :(得分:0)

可以在个人文件的ThisWorkbook模块中使用几行代码:

Option Explicit

Public WithEvents App As Application

Private Sub Workbook_Open()
    Set App = Application
End Sub

Private Sub App_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Debug.Print "RightClick on Sheet: " & Sh.Name & " at " & Target.Address
End Sub

(请注意,添加代码后,您必须保存,完全关闭Excel并重新启动它以便触发Workbook_Open事件。)

但是,有两件事需要考虑:

  1. 设置Cancel = True时,会窃取所有上下文菜单 - 我不建议这样做。但是,如果设置Cancel = False,则会有两个并行操作,首先是您的操作,并且只有在该操作完成后(显示表单可能很长时间),才会弹出上下文菜单 - 非常混乱。
  2. 有几种情况会重置全局版本,请参阅此处的讨论:What is the lifetime of a global variable in excel vba?一旦发生其中一个事件,您的app变量就会重置,从那时起,事件将不会再触发你重启Excel。
  3. 我的建议:将键盘快捷键分配给个人工作簿中的宏。而不是右键单击,要触发的事件将是例如Ctrl+Shift+F F ormat您的工作表。