2015-12-21 2 views
0

Я пытаюсь выбрать ГОД и ТИП бизнеса (1 или более), а затем автофильтр столбца. Таким образом, я могу использовать только 1 макрос вместо того, чтобы делать много для всех альтернатив.Выбор нескольких элементов списка для установки фильтра

(Year Select)
(Type of Business)

Это то, что я имею на данный момент:

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 или более.

Как сохранить несколько значений в списке, чтобы вызвать переменную в качестве фильтра?

Это был я должен называть переменные:

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 ХЛЕБ».

+0

[Это] (http://mariaevert.dk/vba/?p=140) поможет , –

ответ

0

комментируемые код, ваша кнопка должна использовать, основываясь на том, что вы предоставили в вашем вопросе:

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 
+0

Это сработало отлично, мне просто нужно было добавить выгрузку Userform1 в конец, чтобы макрос мог продолжить работу! Благодаря ! – MVZ

Смежные вопросы