当Listview项目单击时,如何切换全选/取消选中所有复选框?

时间:2015-12-10 02:25:18

标签: vba ms-word word-vba

我想切换全选/取消全选复选框。示例:

如果列表视图中的所选项目总数等于列表视图中的总项目,则全选/取消全选复选框将被检查,如果没有,则取消选中全选/取消全选复选框

Dim c,listcount As Integer
listcount = ListView1.ListItems.Count

If c = listcount Then
    CheckBox1.Value = True
Else
    CheckBox1.Value = False
End If

我选择和取消全选的代码很好,当您选中或取消选中全选/取消全选复选框时,列表视图中的所有项目也会选中或取消选中。当所选项目总数等于列表视图中的总项目时,上面的代码将切换全选/取消全选复选框,并通过检查或单击列表视图中的项目来触发,但问题是它还触发我的全选/取消全选复选框的代码,这将导致取消选中listview中的所有列表项。

有人可以帮我这个吗?

这是我的代码全选/取消全选复选框

    Private Sub CheckBox1_Click()
        'check if this is already check or not
        If CheckBox1.Value = True Then
            seldesel (True)
        Else
            seldesel (False)
        End If
    End Sub

Function seldesel(a As Boolean)
    listcount = ListView1.ListItems.Count
    For X = 1 To listcount
        ListView1.ListItems(X).Checked = a
    Next X
End Function

1 个答案:

答案 0 :(得分:2)

为防止发生CheckBox1_Click子例程,您可以将触发器从Click更改为CheckBox1_MouseDown。这样,只有当用户手册用鼠标检查它时,它才会运行它的代码。

此外,在MouseDown中,代码在实际检查框之前运行。要修复代码,请更改此行:

If CheckBox1.Value = True Then

只需这个

If CheckBox1.Value = False Then

希望这有帮助。