我有一个Word UserForm(Word 2007),带有复选框和两个命令控件 - 确定和取消。
当从宏菜单或指定的图标激活表单时,我单击复选框没有任何反应。当我点击OK按钮时会出现一条消息,告诉我我没有选择任何东西!当我单击“取消”按钮时,表单将卸载。
复选框由Click事件组成,该事件从已选中切换到取消选中。还有一个SelectAll复选框。单击时,将选中或取消选中所有其他复选框。当取消选中其中一个其他复选框时,也会取消选中SelectAll复选框。
当我从VBE激活表单时,一切正常。
以下是我所谈论的一个示例:
Sub Loadform()
Load UserForm1
UserForm1.Show
End Sub
Private Sub btnCancel_Click()
Unload Me
End Sub
Private Sub btnOK_Click()
If Me.CheckBox2.Value = True And Me.CheckBox3.Value = True Then
MsgBox "All checkboxes are checked"
ElseIf Me.CheckBox2.Value = True Then
MsgBox Me.CheckBox2.Name & " is checked"
ElseIf Me.CheckBox3.Value = True Then
MsgBox Me.CheckBox3.Name & " is checked"
ElseIf Me.CheckBox2.Value = False And Me.CheckBox3.Value = False Then
MsgBox "You haven't selected any checkboxes."
End If
End Sub
Private Sub CheckBox2_Click()
If Me.CheckBox2.Value = True Then
Me.CheckBox2.Value = False
Me.ckbSelectAll.Value = False
Else
Me.CheckBox2.Value = True
End If
End Sub
Private Sub CheckBox3_Click()
If Me.CheckBox3.Value = True Then
Me.CheckBox3.Value = False
Me.ckbSelectAll.Value = False
Else
Me.CheckBox3.Value = True
End If
End Sub
Private Sub ckbSelectAll_Click()
If Me.ckbSelectAll.Value = True Then
Me.ckbSelectAll.Value = False
Else
Me.ckbSelectAll.Value = True
End If
If ckbSelectAll.Value = False Then
Me.CheckBox2.Value = False
Me.CheckBox3.Value = False
Else
Me.CheckBox2.Value = True
Me.CheckBox3.Value = True
End If
End Sub
答案 0 :(得分:2)
在您的点击事件处理程序中,例如
Private Sub CheckBox3_Click()
...
End Sub
检查复选框是否已选中(即值为true
),如果是,则将值设置为false
。这意味着一旦选中复选框(或在取消选中后立即检查),将始终取消选中复选框,从而显示复选框无法正常工作。
这是一个开始的单击事件处理程序示例(我已经很长时间没有编写VBA了,但我认为以下情况很好。现在将测试...)
Private Sub CheckBox2_Click()
' If checkbox2 is checked but checkbox3 is not, '
' uncheck the select all checkbox '
If CheckBox2 And Not CheckBox3Then
ckbSelectAll = False
End If
End Sub
如果您需要任何进一步的帮助或提示,请发表评论