ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 19910|回复: 35

[讨论]如何枚舉控件屬性???

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-11-3 08:50 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:控件
例:在表單上有一個文本框控件請教如何用代碼枚舉這個控件都有那些屬性???

TA的精华主题

TA的得分主题

发表于 2006-11-3 09:28 | 显示全部楼层

'引用TypeLib Information


Sub listcontrols()
Cells(1, 1) = "控件"
Cells(1, 2) = "属性,方法,事件"
Cells(1, 3) = "值"
[a1:c1].Interior.ColorIndex = 3
          On Error Resume Next
          Dim ctl     As Object, n As Long
          n = 1
          For Each ctl In UserForm1.Controls
                  Dim iInf     As InterfaceInfo
                  Set iInf = InterfaceInfoFromObject(ctl)
                  If Not (iInf Is Nothing) Then
                          Dim mem     As MemberInfo
                          For Each mem In iInf.Members
                                  If mem.InvokeKind Then
                                  n = n + 1
Cells(n, 1) = ctl.Name
Cells(n, 2) = mem.Name
Cells(n, 3) = CallByName(ctl, mem.Name, VbGet)
                                  End If
                          Next
                  End If
          Next
[a1:c65536].Columns.AutoFit
End Sub

TA的精华主题

TA的得分主题

发表于 2006-11-3 17:56 | 显示全部楼层

Test Ok!

TypeLib Information--->引用TLBINF32.Dll

TA的精华主题

TA的得分主题

发表于 2006-11-3 18:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

发现 2 楼代码运行后,控件的属性值被列出两次?

控件属性,方法,事件
ComboBox1QueryInterface
ComboBox1AddRef
ComboBox1Release
ComboBox1GetTypeInfoCount
ComboBox1GetTypeInfo
ComboBox1GetIDsOfNames
ComboBox1Invoke
ComboBox1Cancel
ComboBox1Cancel
ComboBox1ControlSource 
ComboBox1ControlSource 
ComboBox1ControlTipText 
ComboBox1ControlTipText 
ComboBox1Default 
ComboBox1Default 

ComboBox1Height24
ComboBox1Height24
ComboBox1HelpContextID0
ComboBox1HelpContextID0

[此贴子已经被作者于2006-11-3 18:21:57编辑过]

TA的精华主题

TA的得分主题

发表于 2006-11-3 18:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

修改如下:

Sub listcontrols()
Cells(1, 1) = "控件"
Cells(1, 2) = "属性,方法,事件"
Cells(1, 3) = "值"
[a1:c1].Interior.ColorIndex = 3
          On Error Resume Next
          Dim ctl     As Object, n As Long
          n = 1
          For Each ctl In UserForm1.Controls
                  Dim iInf     As InterfaceInfo
                  Set iInf = InterfaceInfoFromObject(ctl)
                  If Not (iInf Is Nothing) Then
                          Dim mem     As MemberInfo
                          For Each mem In iInf.Members
                                  If mem.InvokeKind And INVOKE_PROPERTYGET Then
                                  n = n + 1
Cells(n, 1) = ctl.Name
Cells(n, 2) = mem.Name
Cells(n, 3) = CallByName(ctl, mem.Name, VbGet)
                                  End If
                          Next
                  End If
          Next
[a1:c65536].Columns.AutoFit
End Sub

TA的精华主题

TA的得分主题

发表于 2006-11-3 18:40 | 显示全部楼层
另外:窗体(UserForm1)的属性等值是否可以一起列出?[em10]

TA的精华主题

TA的得分主题

发表于 2006-11-3 21:32 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-11-3 21:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

northwolves版主敬礼[em17][em17][em17]、献花![em23][em23][em23][em23][em23]

TA的精华主题

TA的得分主题

发表于 2006-11-5 11:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用Aeolian-Vox在2006-11-3 18:40:21的发言:
另外:窗体(UserForm1)的属性等值是否可以一起列出?[em10]

http://northwolves.blog.excelhome.net/user1/northwolves/archives/2006/715.html

Sub EnumUserForms()
On Error Resume Next
    Dim i As Long, j As Long, n As Long
        With ThisWorkbook.VBProject.VBComponents
        For i = 1 To .Count
            If .Item(i).Type = 3 Then
                For j = 1 To ThisWorkbook.VBProject.VBComponents(i).Properties.Count
                n = n + 1
                    Cells(n, 1) = ThisWorkbook.VBProject.VBComponents(i).Name
                    Cells(n, 2) = ThisWorkbook.VBProject.VBComponents(i).Properties(j).Name
                    Cells(n, 3) = ThisWorkbook.VBProject.VBComponents(i).Properties(j)
                Next j
            End If
        Next
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2006-11-5 13:25 | 显示全部楼层

谢谢northwolves版主。

需要说明的一点是使用该程序之前,先勾选 信任对于‘Visual Basic项目’的访问

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-21 18:17 , Processed in 0.048310 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表