首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA: BeforeDoubleClick来自personal.xlsb

VBA: BeforeDoubleClick来自personal.xlsb
EN

Stack Overflow用户
提问于 2018-05-29 08:32:21
回答 2查看 332关注 0票数 0

我想做以下工作:我希望能够在我的BeforeDoubleClick中修改personal.xlsb事件。这里有一个例子说明了我的想法:我想,当我双击一个细胞时,它的背景颜色设置为绿色。通常,我必须在工作簿Workbook_BeforeDoubleClick事件中这样做,但是我希望能够在任何工作簿和personal.xlsb中这样做,这样我就可以将不同的方法分配给BeforeRightClick事件。理想情况下,我应该有一个带有几个按钮的userform,每个按钮为BeforeRightClick事件分配一个不同的方法。

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

诚挚的问候!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-29 10:11:07

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

代码语言:javascript
复制
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. 有几种情况下全局Vars被重置,请参见这里的讨论:What is the lifetime of a global variable in excel vba?一旦发生这些事件之一,您的app变量就会被重置,并且在重新启动Excel之前,事件上的事件将不再触发。

我的建议是:在你的个人工作簿中给宏指定一个键盘快捷方式。要触发的事件不是右键单击,而是Ctrl+Shift+F to Format您的工作表。

票数 1
EN

Stack Overflow用户

发布于 2018-05-29 09:29:56

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

有关示例代码的完整说明可在这里获得:http://www.cpearson.com/excel/AppEvent.aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50579757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档