Как получить все элементы, выбранные в ListBox (множественный выбор) в VBA - PullRequest
1 голос
/ 13 июня 2019

Я хотел бы выбрать несколько данных из списка

Приведенный ниже код отлично работает для одиночного выбора: 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, предыдущий код не работает: в окне сообщения ничего не отображается.

Я что-то не так делаю?

1 Ответ

0 голосов
/ 13 июня 2019

Событие должно быть _Change, а не _Click, если оно не входит в него, в случае fmMultiSelectExtended по какой-то странной причине.Или попробуйте другие встроенные события в VBE, доступные из выпадающего списка:

enter image description here

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 разных набора данных в ближайшем окне.Вот так:

enter image description here

Для этого ListBox:

enter image description here

...