Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: 兰色幻想

[分享] 类模块实例1: 给24个控件批量添加change事件

  [复制链接]
发表于 2010-5-25 21:26 | 显示全部楼层
回复

使用道具 举报

发表于 2010-7-18 02:48 | 显示全部楼层
回复

使用道具 举报

发表于 2010-8-24 14:59 | 显示全部楼层

哦,兰版,在类模块在控件中的应用是不是这样?

首先呢,我们需要定一个 控件的事件 变量

Public WithEvents che As MSForms.CheckBox
Public WithEvents frm As MSForms.UserForm

然后呢,把change事件写成一个过程

Private Sub che_Change() '类的数据改变事件

 Dim index As Long, arr, k, m, k1, m1
    index = Mid(che.Name, 9, 10)  '取出checkboxN中的数字N
    '以下几句是创建复选框和单元格区域中的单元格一一对应
    m = ((index - 1) Mod 6) + 1
    k = Int((index - 1) / 6) + 1
    Cells(m + 1, k + 1) = IIf(frm.Controls("checkbox" & index) = True, 1, "")
    '下面是重新建立所有复选框和单元格区域的关联
    arr = Range("B2:E7")
  For x = 1 To 24
    m1 = ((x - 1) Mod 6) + 1
    k1 = Int((x - 1) / 6) + 1
    frm.Controls("checkbox" & x) = IIf(arr(m1, k1) = 0, 0, 1)
  Next x
End Sub

接着,在窗体里为每个需要这个功能的控件声明一个变量

Dim newclass(1 To 24) As che类

继续,给这些变量赋值

Private Sub UserForm_Initialize()

    For i = 1 To 24
        Set newclass(i) = New che类   '创建一个新的che类对象
        Set newclass(i).che = Controls("checkbox" & i)  '设置新类和checkbox(i)控件创建关键
        Set newclass(i).frm = Me     '类窗体也和当前窗体建立关联
    Next
复选框随单元格内容更新
End Sub

最后,在代码执行过程中,碰到相应的变量控件用到change事件的时候,就调用这个类的过程

Sub 复选框随单元格内容更新()
Dim arr, k
arr = Range("B2:E7")
 For i = 1 To 24
  m = ((i - 1) Mod 6) + 1
  k = Int((i - 1) / 6) + 1
  UserForm1.Controls("checkbox" & i) = IIf(arr(m, k) = 0, 0, 1)
 Next
End Sub

总体应该是这样子,我理解的对吗,兰版?

[此贴子已经被作者于2010-8-24 15:26:44编辑过]
回复

使用道具 举报

发表于 2010-9-18 22:06 | 显示全部楼层

zxczcxz
回复

使用道具 举报

发表于 2010-10-17 21:11 | 显示全部楼层

Thank!

回复

使用道具 举报

发表于 2010-12-8 16:47 | 显示全部楼层

学习
回复

使用道具 举报

发表于 2010-12-13 16:30 | 显示全部楼层

谢谢校长
回复

使用道具 举报

发表于 2010-12-13 16:33 | 显示全部楼层

继续 加油
回复

使用道具 举报

发表于 2010-12-22 12:07 | 显示全部楼层

东西呢。。

回复

使用道具 举报

发表于 2010-12-22 12:57 | 显示全部楼层

[em09][em09]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 17:52 , Processed in 0.349954 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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