你好!我已经搜索过 google,但发现只有 1 页提到了如何在 MS Access 中执行此操作,但没有在 MS Excel 中执行此操作,此处:列出 MS Access 表单的控件及其事件 https://stackoverflow.com/questions/37204249/list-an-ms-access-forms-controls-with-their-events.
我知道如何在用户窗体上列出控件。
我想知道的是如何获取代码编辑器中控件可用的事件列表(只是澄清)。
有没有一种方法可以以编程方式列出用户窗体上的控件(如命令按钮)的所有可用事件过程,以便我可以将该事件列表添加到数组/集合/字典中以供其他用途。
我找不到上面提到的链接中提到的 control.properties,因为我在 Excel 中工作,我猜这个属性没有公开。
我希望我可以浏览一组属性/事件,例如“对于 oneControl.Events 中的每个 oneEvent”,我知道这是不可能的。
我认为必须有一个类似的内部列表/集合,因为我们可以在 VBA 编辑器中浏览对象浏览器或在 VBA 编辑器中编写事件处理程序代码。
有没有办法访问该列表/集合(可能通过 VBIDE.VBProject)?
提前谢谢了。
Hurrah!
我终于自己找到了答案!好吧,在@Tim Williams 的帮助下。
我花了5天时间研究TLI这个话题。
即使当我的国家缅甸被非法和可怕的军事政变围困时(2021 年 2 月 1 日),我也无法停止思考我面临的 TLI 问题,尽管我必须经历痛苦、愤怒、痛苦、不确定性和被侵犯的感觉。
现在,我已经解决了。
也就是说,我仍然不太明白整个 TLI 是如何运作的。
我认为我需要花几年时间阅读该主题才能完全理解它的声明、机制、功能和方法。
不管怎样,我将分享我通过阅读大量网页并最终使用简单的监视窗口找到答案来找出如何获取可用于 VBA 中给定用户窗体控件的事件过程名称列表的内容。
以下子内容取自另一个 stackoverflow 页面 https://stackoverflow.com/questions/19783180/get-list-of-all-properties-for-an-object关于列出用户窗体对象的属性,我陷入了困境,因为我不完全理解返回数据的结构是如何格式化的,但通过使用 VBA 编辑器中的“监视”窗口查看结构克服了这个问题。
要求:引用位于 C:\Windows\SysWow64\TLBINF32.DLL 的 TypeLib 信息库
Sub listControlEventNames(ByVal o As Object)
Dim t As TLI.TLIApplication
Set t = New TLI.TLIApplication
Dim ti As TLI.TypeInfo
Set ti = t.ClassInfoFromObject(o)
Dim i As Integer
Dim mi As TLI.MemberInfo
For Each mi In ti.DefaultEventInterface.Members
i = i + 1
ActiveSheet.Cells(i, 1).value = mi.Name
Next
End Sub
应使用用户窗体控件名称来调用该子程序,例如:
call listControlEventNames(UserForm1.ToggleButton1)
or
listControlEventNames Userform1.ToggleButton1
最后,我可以向上帝发誓(但我是一个自由思想家),我真的找不到如何在网络上的任何地方列出用户窗体控件事件,更不用说这个库的用户手册了。我在 TLI 上找到的许多示例代码片段、解释和讨论仅用于列出用户窗体控件的属性。
无论如何,享受吧!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)