哦,兰版,在类模块在控件中的应用是不是这样? 首先呢,我们需要定一个 控件的事件 变量 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编辑过] |