Множественный выбор списка vba - PullRequest
0 голосов
/ 07 мая 2018

У меня есть несколько списков в форме с разрешенным множественным выбором. Мне нужно связать выбранные параметры с переменными. Я попробовал это:

For i = 0 To (ListBox7.Items.Count - 1)
            If ListBox7.Selected(i) = True Then
                If maq1 = "" Then
                    maq1 = ListBox7.GetItemText(i)
                Else
                    maq2 = ListBox7.GetItemText(i)
                End If
            End If
Next

и это:

For i = 0 To (ListBox7.Items.Count - 1)
            If ListBox7.SelectedItem(i) Then
                If maq1 = "" Then
                    maq1 = ListBox7.GetItemText(i)
                Else
                    maq2 = ListBox7.GetItemText(i)
                End If
            End If
Next

Но ничего не работает. В первом случае я получил ошибку «выбран не является членом списка», а во втором - «преобразование типа 'Char' в 'Boolean' недопустимо". кто-нибудь может мне помочь? спасибо:)

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

@ CindyMeister Для создания списков я просто выбрал список из панели инструментов и создал его Форма Это моя форма. И это код для заполнения списков де:

 While folhaexcel.Cells(contador, 1).text <> ""
            maquina = folhaexcel.Cells(contador, 1).text
            grupo = folhaexcel.Cells(contador, 4).text
            status = folhaexcel.Cells(contador, 2).text

            If status = "OFF" And grupo = "Climatic Chambers" Then

                ListBox1.Items.Add(maquina)


            ElseIf status = "OFF" And grupo = "Thermal Shock Chamber" Then

                ListBox2.Items.Add(maquina)


            ElseIf status = "OFF" And grupo = "Temperature Chamber" Then

                ListBox3.Items.Add(maquina)


            ElseIf status = "OFF" And grupo = "Acoustic Machine" Then

                If maquina = "m32" Then
                    ListBox5.Items.Add("m32 + m35")

                ElseIf maquina = "m35" Then

                Else
                    ListBox5.Items.Add(maquina)

                End If


            ElseIf status = "OFF" And grupo = "Fall Machine" Then

                ListBox6.Items.Add(maquina)

            ElseIf status = "OFF" And grupo = "Electric Equipment" Then

                ListBox7.Items.Add(maquina)

            ElseIf status = "OFF" And grupo = "Vibration + Temperature" Then

                If maquina = "m1" Then
                    ListBox4.Items.Add("m1 + m2")

                ElseIf maquina = "m2" Then

                ElseIf maquina = "m3" Then

                    ListBox4.Items.Add("m3 + m89")

                ElseIf maquina = "m89" Then

                ElseIf maquina = "m27" Then

                    ListBox4.Items.Add("m27 + m28")

                ElseIf maquina = "m28" Then

                ElseIf maquina = "m90" Then

                    ListBox4.Items.Add("m90 + m93")

                ElseIf maquina = "m93" Then

                Else

                    ListBox4.Items.Add(maquina)

                End If


            End If

            contador = contador + 1

        End While

и это работает хорошо. Но теперь мне нужно связать машины, которые я выбираю в каждом списке, с переменными, но я не могу.

* ящик для инструментов 1009 *

0 голосов
/ 07 мая 2018

Для меня этот код работает, но учтите, что, следуя вашей логике, maq1 содержит первое выбранное значение и maq2, затем последнее (если более одного значения было выбран). Я не знаю, действительно ли ты этого хочешь ...

Dim i As Integer, maq1 As String, maq2 As String
For i = 0 To Me.ListBox1.ListCount - 1

    If Me.ListBox1.Selected(i) Then
        If maq1 = "" Then
            maq1 = Me.ListBox1.List(i)
        Else
            maq2 = Me.ListBox1.List(i)
        End If
    End If
Next i

Selected - массив логических значений, указывающих, выбран элемент или нет. List сам хранит предметы. Поэтому, если Selected(i) равно true, выбирается List(i).

...