VBA 和 VB6 加载项对象模型(VBIDE)公开了一个具有CommandBarEvents
event的Click
对象,事件签名为:
并将对CommandBarControl
的引用传递给VBE.Events.CommandBarEvents
,以注册该CommaneBarControl
的事件处理程序:
Office 对象模型定义了具有自己的Click
events的单个CommandBar控件,例如,具有CommandBarControl
事件的Click
对象,其签名为:
并将对CommandBarButton
的引用分配给WithEvents
对象:
为什么会有区别,我应该选择哪一个?
我将事件附加到VBE的CommandBar(相对于主机应用程序中的CommandBar)上的控件上。
Office CommandBars无权访问CommandBarEvents
对象,因此我假设它们必须使用CommandBarButton.Click
事件。但是VBE(在任何Office主机下)都可以访问CommandBarButton
事件和CommandBarEvents
事件,因此我可以使用这两种方法,尽管仅CommandBarEvents
对象的存在表明它是首选方法(并且可能是非Office的唯一方法) VBA主机),大多数将事件处理程序添加到VBE CommandBars的在线examples都使用CommandBarEvents
。
MZ Tools的Carlos Quintero非常有用,但是在这种情况下,他网站上的信息有些矛盾。他建议使用The CommandBarEvents approach was used in the old Microsoft Visual Basic 5.0 / 6.0 environment,但也要在此page上使用CommandBarControl.Click
方法
VBE和将事件附加到CommandBar
控件有什么特别之处吗?如果我选择使用CommandBarControl
事件而不是CommandBarEvents
事件,是否有任何问题(内存泄漏,IDTExtensibility2关闭问题等)?
最佳答案