vba用于在userform中链接列表框并通过按钮

时间:2017-07-21 09:33:01

标签: excel vba excel-vba

我创建了一个带有两个具有多个选项的列表框的用户窗体。

  • 使用工作表结果列L的位置1填充Listbox1。
  • 使用工作表结果列M的位置2填充Listbox2。

我有一个按钮设计为“GO !!”

现在,我有一个代码,它的工作方式是,你单击列表框1(例如:德国是Location1,它过滤位置) 同样,如果您选择了Listbox2(例如,位置2中的USA,它会过滤位置)

我想有一个代码,这样两个列表框应该相互链接并通过按钮访问。

对于Eg。如果我从Listbox1中单击“USA”。来自Listbox2的“德国”,我点击“GO”,它应该显示美国的结果;我的表2中有德国。

此外,如果我没有选择Listbox2,那么它应该只显示listbox1的结果,反之亦然。

以下是我用于listbox1的代码。 我更改了第二个列表框的列表框名称和具有相同代码的列号。

Private Sub DoFilter1()
    Dim ws As Worksheet
    Dim strCriteria() As String, i As Integer, arrIdx As Integer
    ReDim Preserve strCriteria(0 To arrIdx)

    arrIdx = 0
    For i = 0 To Me.ListBox1.ListCount - 1
        If Me.ListBox1.Selected(i) Then
            ReDim Preserve strCriteria(0 To arrIdx)
            strCriteria(arrIdx) = Me.ListBox1.List(i)
            arrIdx = arrIdx + 1
        End If
    Next i

    Set ws = Sheets("Result")
    If arrIdx = 0 Then
        ws.UsedRange.AutoFilter
    Else
        ws.Range("A:P").AutoFilter Field:=12, Criteria1:=Array(strCriteria), Operator:=xlFilterValues
    End If
End Sub

有人可以建议我,如何将它们链接起来并通过按钮访问。任何领导都会有所帮助。

这就是我的用户形态的样子。我想从列表中选中该复选框,然后单击“确定”以显示结果。此外,我应该能够在复选框中选择多个选项。

screenshot

1 个答案:

答案 0 :(得分:2)

请尝试以下代码,这可能会有所帮助。感谢

        With ListBox1
            For x = 0 To .ListCount - 1
                If .Selected(x) Then
                    temp = temp & Chr(10) & .List(x)
                End If
            Next
        End With

        With ListBox2
            For x = 0 To .ListCount - 1
                If .Selected(x) Then
                    temp = temp & Chr(10) & .List(x)
                End If
            Next
        End With

        MsgBox temp & " is selected"