多选列表框vba

时间:2018-05-07 09:01:57

标签: vba listbox multi-select

我在允许多选的表单中有一些列表框。我需要将选择的选项与变量相关联。 我试过这个:

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'到布尔'无效"。 有人能帮助我吗?谢谢:))

2 个答案:

答案 0 :(得分:0)

对我而言,此代码有效,但请注意,按照您的逻辑,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)

答案 1 :(得分:0)

@CindyMeister 为了创建列表框,我刚从工具箱中选择了列表框并创建了它 Form这是我的表格。这是填充de listboxes的代码:

 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

这很好用。但现在我必须将我在每个列表框中选择的机器与变量相关联,但我不能。

toolbox