gpt4 book ai didi

Excel VBA - 以编程方式列出用户窗体上控件的可用事件过程

转载 作者:行者123 更新时间:2023-12-04 21:46:01 25 4
gpt4 key购买 nike

available event procedures for userform controls
你好!我已经搜索了谷歌,但发现只有 1 页提到如何在 MS Access 中而不是在 MS Excel 中执行此操作,这里:
List an MS Access form's controls with their events .
我知道如何列出用户窗体上的控件。我想知道的是如何获取代码编辑器中控件可用的事件列表(只是澄清)。
有没有办法以编程方式列出用户窗体上控件的所有可用事件过程,例如命令按钮,以便我可以将该事件列表添加到数组/集合/字典中以供其他用途。
我找不到上面提到的链接中提到的 control.properties,因为我在 Excel 中工作,我猜这个属性没有公开。
我希望我可以浏览一组属性/事件,例如“对于 oneControl.Events 中的每个 oneEvent”,我知道这是不可能的。
我认为必须有一个这样的内部列表/集合,因为我们可以通过 VBA 编辑器中的对象浏览器或在 VBA 编辑器中编写事件处理程序代码。
有没有办法访问该列表/集合(可能是通过 VBIDE.VBProject)?
提前谢谢了。

最佳答案

欢呼!
我终于自己找到了答案!好吧,在@Tim Williams 的帮助下。
我花了 5 天时间研究 TLI 的主题。
即使我的国家缅甸被一场非法和可怕的军事政变围困(2021 年 2 月 1 日),我仍然无法停止思考我面临的这个 TLI 问题,尽管我不得不经历痛苦、愤怒、痛苦、不确定性和被侵犯的感觉。
现在,我解决了。
也就是说,我仍然不太了解整个 TLI 的工作原理。
我想我要花几年的时间阅读这个主题才能完全理解它的声明、机制、功能和方法。
无论如何,我将分享我通过阅读大量网页发现的内容,并最终使用一个简单的监 window 口来找出答案,以了解如何获取 VBA 中给定用户窗体控件可用的事件过程名称列表。
以下子内容取自 another stackoverflow page关于列出 userform 对象的属性,我一直坚持下去,因为我不完全理解返回数据的结构是如何格式化的,但是通过使用 VBA 编辑器中的 Watch 窗口查看结构来克服这一点。
要求:引用 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
这个 sub 应该用一个用户窗体控件名称来调用,例如:
call listControlEventNames(UserForm1.ToggleButton1)
或者
listControlEventNames Userform1.ToggleButton1
最后,我可以向上帝发誓(但我是一个自由思想家),我真的找不到如何在网络上的任何地方列出用户窗体控件事件,更不用说这个库的用户手册了。我在 TLI 上找到的许多示例代码片段、解释和讨论仅用于列出用户窗体控件的属性。
总之,享受吧!
sub output

关于Excel VBA - 以编程方式列出用户窗体上控件的可用事件过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65964264/

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