Excel VBA:从personal.xlsb双击之前
我希望执行以下操作:我希望能够在我的personal.xlsb中修改BeforeDoubleClick事件。 这里有一个例子说明了我的想法:我想,当我双击一个单元格时,它的背景色设置为绿色。通常我必须在工作簿工作簿\u BeforeDoubleClick事件中执行此操作,但是我希望能够在任何工作簿和我的personal.xlsb中执行此操作,以便我可以为BeforeRightClick事件指定不同的方法。理想情况下,我会有一个带有几个按钮的userform,每个按钮为BeforeRightClick事件分配不同的方法 这可能吗?我无法在网上找到解决方案Excel VBA:从personal.xlsb双击之前,excel,vba,Excel,Vba,我希望执行以下操作:我希望能够在我的personal.xlsb中修改BeforeDoubleClick事件。 这里有一个例子说明了我的想法:我想,当我双击一个单元格时,它的背景色设置为绿色。通常我必须在工作簿工作簿\u BeforeDoubleClick事件中执行此操作,但是我希望能够在任何工作簿和我的personal.xlsb中执行此操作,以便我可以为BeforeRightClick事件指定不同的方法。理想情况下,我会有一个带有几个按钮的userform,每个按钮为BeforeRightCli
致以最良好的祝愿 这是可能的-要做到这一点,您需要捕获
应用程序
事件
此处提供了带有示例代码的完整说明:
这是可能的-要做到这一点,您需要捕获
应用程序
事件
此处提供了带有示例代码的完整说明:
在您个人文件的
本工作簿
模块中,只需几行代码即可:
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\u Open
事件)
但是,有两件事需要考虑:
Cancel=True
时,您窃取了所有上下文菜单-我不建议这样做。但是,如果设置Cancel=False
,将有两个并行操作,第一个是您的操作,只有在该操作完成后(显示表单时可能需要很长时间),关联菜单才会弹出-非常混乱app
变量将被重置,并且从那时起,事件将不再触发,直到您重新启动Excel我的建议是:为个人工作簿中的宏指定键盘快捷键。触发的事件不是右键单击,而是例如
Ctrl+Shift+F
到F或在您的工作表上。您的个人文件的此工作簿
模块中只需几行代码即可:
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\u Open
事件)
但是,有两件事需要考虑:
Cancel=True
时,您窃取了所有上下文菜单-我不建议这样做。但是,如果设置Cancel=False
,将有两个并行操作,第一个是您的操作,只有在该操作完成后(显示表单时可能需要很长时间),关联菜单才会弹出-非常混乱app
变量将被重置,并且从那时起,事件将不再触发,直到您重新启动ExcelCtrl+Shift+F
toF或在工作表上