您的位置:首页 > 其它

利用类模块对工作表中的ActiveX控件批量设定的注意事项

2011-05-19 13:44 253 查看
利用类模块可以减少许多重复的代码


以给控件
设定批量
的Click事件为例,在工作簿中定义
了以下名为clsChe的类模块:

Public WithEvents Chkbox As MSForms.CheckBox
Private Sub Chkbox_Change()
MsgBox Chkbox.Value
End Sub


利用该类模块,可以轻松实现对复选框进行批量设置
Change事件。

在窗体
中,只需要绑定窗体中的复选框即可,代码如下:

Dim Chk(1 To 4) As clsChe
Private Sub UserForm_Activate()
For i = 1 To 4
Set Chk(i) = New clsChe
Set Chk(i).Chkbox = Me.Controls("CheckBox" & i)
Next i
End Sub


但是在工作表
中似乎不太容易实现,很多人试过Shapes集合,试过CheckBoxes集合,甚至改变类模块中的定义为

Public WithEvents Chkbox As CheckBox


但会发现,这个CheckBox类型并不支持事件。

因而会给人造成工作表中的复选框控件不是MSForms.CheckBox的错觉,其实不然。

在工作表中插入的复选框和窗体中的其实是一样的。

但是在工作表中插入的复选框增加了一层Shape外衣,使用户无法直接访问到内层的MSForms.CheckBox控件。

必须脱去层层外衣才能访问到其核心控件,其实这个真正的复选框控件在这里

Shapes(i).OLEFormat.Object.Object


我们还可以利用CALLBYNAME函数来直接访问

CallByName(Sheet1, "CheckBox" & i, VbGet)


其余代码同窗体中是一致的。

请查看附件:http://www.exceltip.net/thread-21327-1-1-11314.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  工作 shapes