gpt4 book ai didi

vba - VBE 中的 CommandBarEvents.Click 和 CommandBarButton.Click 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 15:49:02 25 4
gpt4 key购买 nike

VBA VB6 插件对象模型 (VBIDE) 公开了 CommandBarEvents具有 Click 的对象event ,事件签名为:

Dim WithEvents CmdBarEvents As CommandBarEvents

Private Sub CmdBarEvents_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)



以及对 CommandBarControl 的引用传递给 VBE.Events.CommandBarEvents注册事件处理程序 CommaneBarControl :

Set CmdBarEvents = Application.VBE.Events.CommandBarEvents(CmdBarItem)



办公室 对象模型定义了单独的 CommandBar 控件,这些控件具有自己的 Click events ,例如 CommandBarControl具有 Click 的对象事件,签名是:

Dim WithEvents CmdBarBtn As CommandBarButton

Private Sub CmdBarBtn_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)



以及对 CommandBarButton 的引用分配给 WithEvents目的:

Set CmdBarButton = myButton



为什么会有不同,我应该更喜欢哪个?

我将事件附加到 VBE 的 CommandBars 上的控件(与主机应用程序中的 CommandBars 相对)。

Office CommandBars 无权访问 CommandBarEvents对象,所以我假设他们必须使用 CommandBarButton.Click事件。但是 VBE(在任何办公室主机下)可以访问 CommandBarButton事件和 CommandBarEvents事件,所以我可以使用任何一种方法,尽管仅存在 CommandBarEvents object 表明它是首选方法(并且可能是非 Office VBA 主机中唯一的方法),并且大多数在线 examples将事件处理程序添加到 VBE CommandBar 确实使用 CommandBarEvents .

MZ Tools 的 Carlos Quintero 提供了非常有用的信息,但在这种情况下,他网站上的信息有点矛盾。他建议 The CommandBarEvents approach was used in the old Microsoft Visual Basic 5.0 / 6.0 environment ,但也使用 CommandBarControl.Click处理此问题 page

VBE 和将事件附加到 CommandBar 有什么特别之处吗?控制?如果我选择使用 CommandBarControl 是否有任何问题(内存泄漏、IDTExtensibility2 关闭问题等)事件结束 CommandBarEvents事件?

最佳答案

  • VB6 是 1998 年的 IDE(以及 1997 年的 VB5)必须始终使用 CommandBarEvents。他们使用的 Office 命令栏是从 Office 97 借来的,其 CommandBarButton 缺少 Click 事件。
  • Office 2000 在 CommandBarButton 类中引入了 Click 事件,并且必须始终用于面向 Office 2000 及更高版本(或其他 VBA 主机)的 VBA 加载项,因为尽管 CommandBarEvents 显然可用,但 Office 2010 64 位不支持CommandBarEvents(如果使用它会崩溃)。
  • Visual Studio 是另一种具有独特性的动物。
  • 关于vba - VBE 中的 CommandBarEvents.Click 和 CommandBarButton.Click 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41055765/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com