Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2497|回复: 7

[已解决]与类有关的一个初级代码问题。

[复制链接]
发表于 2014-2-19 23:41 | 显示全部楼层 |阅读模式
本帖最后由 silenthunter 于 2014-2-22 08:57 编辑

类模块 按钮.rar (11.3 KB, 下载次数: 4)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-2-20 08:06 | 显示全部楼层
回复

使用道具 举报

发表于 2014-2-20 08:36 | 显示全部楼层
编写大量具有相同事件的同类控件时,用类模块能够简化代码
回复

使用道具 举报

发表于 2014-2-20 08:41 | 显示全部楼层    本楼为最佳答案   
  1. Dim Buttons() As New BtnClass
  2. '动态数组,类型为BtnClass
  3. 'BtnClass类里声明ButtonGroup对象变量。
  4. 'ButtonGroup响应命令按钮触发的事件
  5. '这样声明后,你可以在代码区的对象下拉列表中找到该变量,然后就可以写该对象的事件响应代码

  6. Private Sub Label1_Click()

  7. End Sub

  8. Private Sub UserForm_Initialize()
  9.     Dim ButtonCount As Integer
  10.     Dim Ctl As Control
  11.     ButtonCount = 0
  12.     For Each Ctl In Me.Controls
  13.         '遍历控件
  14.         If TypeName(Ctl) = "CommandButton" Then
  15.         '检测控件是否为命令按钮
  16.             If Ctl.Name <> "OKButton" Then
  17.             '排除名称为OKButton的命令按钮
  18.                 ButtonCount = ButtonCount + 1
  19.                 'ButtonCount为计数器
  20.                 ReDim Preserve Buttons(1 To ButtonCount)
  21.                 '数组扩容,保留原有值
  22.                 Set Buttons(ButtonCount).ButtonGroup = Ctl
  23.                 '设置ButtonGroup引用
  24.                 'ButtonGroup变量是为响应命令按钮的事件
  25.             End If
  26.         End If
  27.     Next
  28. End Sub
复制代码
回复

使用道具 举报

发表于 2014-2-20 08:45 | 显示全部楼层
QQ截图20140220084918.jpg
回复

使用道具 举报

发表于 2014-2-20 09:49 | 显示全部楼层
为什么不用控件数组呢  
回复

使用道具 举报

 楼主| 发表于 2014-2-20 23:41 | 显示全部楼层
本帖最后由 silenthunter 于 2014-2-20 23:50 编辑
hwc2ycy 发表于 2014-2-20 08:45

谢谢。我已经明白了是怎么回事。

Set Buttons(ButtonCount).ButtonGroup = Ctl 其实可以分解成:

Set Buttons(1).ButtonGroup = Me.CommandButton1
Set Buttons(2).ButtonGroup = Me.CommandButton2
Set Buttons(3).ButtonGroup = Me.CommandButton3
……
……

经过for each以后ctr已经储存了一个个按钮对象。通俗地说,让所有按钮都具备类模块中的属性。

点评

多调试,就会明白的。  发表于 2014-2-21 08:43
回复

使用道具 举报

 楼主| 发表于 2014-2-20 23:42 | 显示全部楼层
苗凱 发表于 2014-2-20 09:49
为什么不用控件数组呢

  • Dim Buttons() As New BtnClass

我不懂。这句不是控件数组吗?

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 06:46 , Processed in 0.350317 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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