|
楼主 |
发表于 2017-12-29 17:10
|
显示全部楼层
类模块代码
- Option Explicit
- Private WithEvents Ufr As MSForms.UserForm
- Private WithEvents Chk As MSForms.CheckBox
- Private WithEvents Chk1 As MSForms.CheckBox '标签Caption="全选"的那一个
- Public Sub Attech(f As MSForms.UserForm, c As MSForms.CheckBox)
- Set Ufr = f
- If c.Caption = "全选" Then
- Set Chk1 = c
- xName = c.Name
- Else
- Set Chk = c
- End If
- End Sub
- Private Sub Chk_Click()
- Dim ctl As Control, Flag As Boolean
- If Chk.Tag <> "" Then Exit Sub '用Tag属性设置一个阻止信息
- Flag = True
- For Each ctl In Ufr.Controls
- If TypeName(ctl) = "CheckBox" And ctl.Value = False And ctl.Caption <> "全选" Then
- Flag = False: Exit For
- End If
- Next
- Ufr.Controls(xName).Value = Flag
- End Sub
- Private Sub Chk1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
- Rem 这里不用【Chk1_Click】事件
- Dim ctl As Control, Flag As Boolean
- Flag = Chk1.Value
- For Each ctl In Ufr.Controls
- If TypeName(ctl) = "CheckBox" And ctl.Caption <> "全选" Then
- ctl.Tag = "xx" '用Tag属性设置一个阻止信息
- ctl.Value = Not Chk1.Value '与鼠标按下之前的值相反
- ctl.Tag = ""
- End If
- Next
- End Sub
复制代码
|
|