VBA中控件数组.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VBA中的控件数组 2009年2月28日 评论 发表评论 大家都知道,和VB不一样,VBA中不能直接创建控件数组。然而可以使用WithEvents来模拟相同的功能。我们需要一个类来处理控件的事件,而每一个控件需要一个类实例。对于不同控件的类实例,我们可以使用一个对象数组或者集合来实现。 这里使用按钮控件做为例子来介绍怎样在窗体和工作表中创建控件数组。 创建类 创建控件数组之前,我们需要一个类来处理控件的事件。 在VBE窗口中,单击菜单“插入”-“类模块”,在属性窗口中将类的名称改为“cCB”。 在类模块中添加下面这一行: Private WithEvents m_CB As MSForms.CommandButton 这样你就可以从代码栏的顶部左边下拉列表中选择m_CB并选择右边下拉列表中相应的事件。 完整的代码如下: Private WithEvents m_CB As MSForms.CommandButton 初始化,将控件绑定到类 Public Sub Init(ctl As MSForms.CommandButton) Set m_CB = ctl End Sub 控件的Click事件 Private Sub m_CB_Click() MsgBox 你点击了: m_CB.Caption End Sub 注销类 Private Sub Class_Terminate() Set m_CB = Nothing End Sub 窗体中的控件数组 然后创建一个窗体,在窗体中添加两个CommandButton,将这两个按钮控件分别命名为cmd1和cmd2,然后在窗体中的初始化事件中添加代码如下: Private ctlCB(1 To 2) As cCB 以对象数组保存类的实例 Private Sub UserForm_Initialize() Set ctlCB(1) = New cCB 将按钮cmd1赋给类的实例 ctlCB(1).Init cmd1 Set ctlCB(2) = New cCB ctlCB(2).Init cmd2 End Sub 这里使用对象数组ctlCB(1 to 2)来保存类实例。每当使用Set语句创建一个类实例,然后使用类的Init方法将按钮控件赋给这个实例。 也可以使用集合来保存这个类的实例。代码如下: Private colCB As New Collection Private ctlCB As cCB ‘ 以集合保存类的实例 Private Sub UserForm_Initialize() Set ctlCB = New cCB 将按钮cmd1赋给类的实例 ctlCB.Init cmd1 将类的实例加入到集合中 colCB.Add ctlCB Set ctlCB = New cCB ctlCB.Init cmd2 colCB.Add ctlCB End Sub 点击按钮,将弹出对应的消息框。 上面的例子是将手动添加的控件添加到控件数组中。也可以动态创建控件数组。 创建一个新的窗体,然后在窗体的初始化事件中使用Controls集合的Add方法添加CommandButton控件,再将创建好的控件赋给类实例。完整代码如下: Private ctlCB(1 To 3) As cCB Private Sub UserForm_Initialize() Dim nCtr As MSForms.CommandButton For i = 1 To 3 添加按钮控件 Set nCtr = Me.Controls.Add(Forms.CommandButton.1, cmdTest i) 设置按钮控件标题和位置 With nCtr .Caption = CommandButton_ i .Move 10, 10 + (i - 1) * 40, 80, 30 End With 创建cCB类实例 Set ctlCB(i) = New cCB 将控件赋给类实例 ctlCB(i).Init nCtr Next i End Sub 工作表中的控件数组 同样,在工作表中也可以创建控件数组(但和窗体有些不同)。在工作表中分别创建一个Label控件和三个CommandButton控件,如下图: 然后在Label控件的Click事件中添加如下代码: Dim cmdCtl() As cCB 标签控件的Click事件 Private Sub Label1_Click() Dim cmd As OLEObject 所有OLE对象 Dim i As Integer 重新定义数组

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档