首页 > 解决方案 > 如何在 VBA 中将所有项目选择到列表框(多选)中

问题描述

我想从列表框中选择多个数据

下面的代码适用于单选:0 -fmMultiSelectSingle

Private Sub ListBox1_Click()
    Dim Msg As String
    Dim i As Integer

    Msg = "You selected:" & vbNewLine
    For i = 1 To ListBox1.ListCount
        If ListBox1.Selected(i) Then
            Msg = Msg & ListBox1.List(i) & vbNewLine                         
        End If
    Next i

    MsgBox Msg
    ListBox1.Selected(0) = False
End Sub

消息框向我显示所选项目,但如果我将 MultiSelect 选项切换为:

1 - fmMultiSelectMulti或者2 - fmMultiSelectExtended,前面的代码不起作用:消息框不显示任何内容。

难道我做错了什么?

标签: excelvbalistboxmulti-select

解决方案


该事件应该是_Change而不是_Click,只要它没有进入它,在fmMultiSelectExtended由于某种奇怪的原因的情况下。或者尝试 VBE 中的其他内置事件,可从下拉列表中获得:

在此处输入图像描述

Private Sub ListBox1_Change()

    Dim myMsg As String
    Dim i As Long

    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            myMsg = myMsg & ListBox1.List(i) 
        End If
    Next i

    Debug.Print myMsg

End Sub

只需考虑一个事实,如果您一个接一个地选择 3 个值,则每次只有 1 个选定值。因此,您将在即时窗口中获得 3 组不同的数据。像这样:

在此处输入图像描述

为此ListBox

在此处输入图像描述


推荐阅读