Vba 选择多个列表框项目以设置筛选器

Vba 选择多个列表框项目以设置筛选器,vba,excel,listbox,Vba,Excel,Listbox,我正在尝试选择一年和业务类型(1个或更多),然后自动筛选列。这样,我就可以只使用一个宏,而不是为所有备选方案制作多个宏 这就是我目前的情况: Private Sub Botton1_Click() Public Platform As String Public Year as Integer Platform = UserForm1.LB2.Text Year = UserForm1.LB1.value Unload UserForm1 End Sub Private Sub U

我正在尝试选择一年和业务类型(1个或更多),然后自动筛选列。这样,我就可以只使用一个宏,而不是为所有备选方案制作多个宏


这就是我目前的情况:

Private Sub Botton1_Click()
Public Platform As String
Public Year as Integer
Platform = UserForm1.LB2.Text
Year = UserForm1.LB1.value
Unload UserForm1


End Sub

Private Sub UserForm_Initialize()
With LB1

.AddItem "2016"
.AddItem "2017"
.AddItem "2018"

End With

With LB2

.AddItem "CMP"
.AddItem "AS"
.AddItem "MasterBread"
.AddItem "CMI -Andino"
.AddItem "CMI -Brasil"
.AddItem "CMI -CAMEC"
.AddItem "CMI -ConoSur"
.AddItem "Global"
End With

End Sub
年份始终只有1个值,但业务类型可以是1个或更多

如何存储listbox的多个值,以便将变量作为筛选器调用

这是我需要调用的变量:

ActiveSheet.Range("$A$1:$G$1500").AutoFilter Field:=4, Criteria1:="2016"
ActiveSheet.Range("$A$1:$G$1500").AutoFilter Field:=2, Criteria1:="=AS", _
    Operator:=xlOr, Criteria2:="=MASTER BREAD"

在本例中,我需要筛选“2016”和“AS&MASTER BREAD”。

根据您在问题中提供的内容,对按钮应使用的代码进行了注释:

Private Sub Botton1_Click()

    Dim rData As Range
    Dim sFilters As String
    Dim i As Long

    Set rData = ActiveSheet.Range("$A$1:$G$1500")
    rData.AutoFilter    'Remove any existing filters

    'Get the selected year
    If LB1.ListIndex > -1 Then
        'Filter the year
        rData.AutoFilter 4, LB1.Text
    End If

    'Gather all selected values in LB2 (type of business)
    For i = 0 To LB2.ListCount - 1
        'If value is selected, add to sFilters variable
        If LB2.Selected(i) Then sFilters = sFilters & "|" & LB2.List(i)
    Next i

    If Len(sFilters) > 0 Then
        'Filter on selected values
        rData.AutoFilter 2, Split(sFilters, "|"), xlFilterValues
    End If

End Sub

会有帮助的。这非常有效。我只需要在末尾添加unload Userform1,这样宏就可以继续运行了!谢谢