Word用户窗体中的复选框控件

时间:2009-09-05 11:19:47

标签: ms-word word-vba

我有一个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

1 个答案:

答案 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

如果您需要任何进一步的帮助或提示,请发表评论