Excel VBA:检查多选列表框中没有选择任何项目而不进行循环

时间:2017-03-15 18:49:33

标签: vba excel-vba listbox userform excel

我有一些启用了MultiSelect的ListBox。

有没有办法检查用户是否选择了列表框中的所有项目而没有循环?对于很长的列表,宏需要很长时间来检查循环。

1 个答案:

答案 0 :(得分:4)

没有内置属性来检查是否选择了任何内容。循环是最自然的方式。如果列表框中有如此大的数据集使其变慢,则动态检查所选项目计数的另一种方法是实现更改事件并在检查时保留所选项目的计数。

Option Explicit

Dim lSelCount As Long

Private Sub CommandButton1_Click()
    If lSelCount > 0 Then
        MsgBox "At least one item selected"
    Else
        MsgBox "No selection"
    End If
End Sub

Private Sub ListBox1_Change()

    Dim bVal As Boolean
    bVal = Me.ListBox1.Selected(ListBox1.ListIndex)

    If bVal Then
        lSelCount = lSelCount + 1
    Else
       lSelCount = lSelCount - 1
    End If
End Sub