VBA filtriranje

Filteri su veoma korisna funkcionalnost koja omogućava da na osnovu zadatog kriterijuma vršimo filtriranje sadržaja u tabeli ili oblasti nad kojom je prethodno primenjen autofilter. Ovo može da se postigne na više načina, ali uvek postoji neki događaj kojim pokrećemo pomenutu akciju. U ovom „receptu“ ćete saznati kako da filtrirate tabelu uz pomoć, prethodno pripremljene, kombo liste.

Za početak, napravili smo jednu jednostavnu kombo listu i kreirali proceduru kojom punimo njen sadržaj i definišemo inicijalnu vrednost:

Sub Init()

VBAProject.Sheet1.ComboBox1.AddItem “SVI GRADOVI”
VBAProject.Sheet1.ComboBox1.AddItem “Beograd”
VBAProject.Sheet1.ComboBox1.AddItem “Kragujevac”
VBAProject.Sheet1.ComboBox1.AddItem “Novi Sad”
VBAProject.Sheet1.ComboBox1.AddItem “Subotica”
VBAProject.Sheet1.ComboBox1.AddItem “Vršac”
VBAProject.Sheet1.ComboBox1.ListIndex = 0

End Sub

Zatim pišemo kod koji će se aktivirati nakon što se izvrši promena vrednosti kontrole ComboBox1. Filtriranje se postiže tako što najpre aktiviramo radni list i selektujemo oblast koja treba da se filtrira. Zatim za zadatu oblast i kolonu vršimo specifikaciju vrednosti na osnovu koje se vrši filtriranje. Primenom metoda ShowAllData vrši se poništavanje filtera.

Private Sub ComboBox1_Change()

Dim i As Integer
Dim vrednost As String

i = VBAProject.Sheet1.ComboBox1.ListIndex
ActiveSheet.Cells(3, 1).Select

If i = 0 Then
    ActiveSheet.ShowAllData
Else
    Select Case i
        Case 1
        vrednost = “Beograd”
        Case 2
        vrednost = “Kragujevac”
        Case 3
        vrednost = “Novi Sad”
        Case 4
        vrednost = “Subotica”
        Case 5
        vrednost = “Vršac”
    End Select
    With Sheet1
        .AutoFilterMode = False
        .Range(“Partneri”).AutoFilter
        .Range(“Partneri”).AutoFilter Field:=4, Criteria1:=vrednost
    End With
End If

End Sub