Merhaba arkadaşlar,
Uzun bir listeden belirli kriterlere göre filtre yapıyorum, filtre kriterleri sürekli değişiyor. 40 tane kriterim var dersek, uzun uzun statik şekilde 40 kriteri içeren macro yazmak yerine, hem göze daha güzel görünecek, hem de istediğim zaman daha kolay değiştirme yapabileceğim bir fonksiyon yazmaya çalışıyorum.
Kod olarak açıklamak gerekirse, ilk önce uzun yolu veriyorum, sonra da yapmak istediğimi...
1. filtre kriterleri
2. filtre kriterleri
Yapmak istediğim
Gördüğünüz gibi 2. filtre kriterlerinde array var, ilk önce bu bana problem çıkarıyor. İkinci problemimse bir kere filtre yaptıktan sonra, filtreyi resetlemek gerekli.. Tam açıklayamadıysam kusura bakmayın, kısacası argüman alan autofilter yapmak istiyorum.
Uzun bir listeden belirli kriterlere göre filtre yapıyorum, filtre kriterleri sürekli değişiyor. 40 tane kriterim var dersek, uzun uzun statik şekilde 40 kriteri içeren macro yazmak yerine, hem göze daha güzel görünecek, hem de istediğim zaman daha kolay değiştirme yapabileceğim bir fonksiyon yazmaya çalışıyorum.
Kod olarak açıklamak gerekirse, ilk önce uzun yolu veriyorum, sonra da yapmak istediğimi...
1. filtre kriterleri
Kod:
ActiveSheet.Range("$A$1:$O$596").AutoFilter Field:=13, Criteria1:="A"
ActiveSheet.Range("$A$1:$O$596").AutoFilter Field:=6, Criteria1:="FULL"
ActiveSheet.Range("$A$1:$O$596").AutoFilter Field:=5, Criteria1:="-"
ActiveSheet.Range("$A$1:$O$596").AutoFilter Field:=3, Criteria1:="20lik"
2. filtre kriterleri
Kod:
ActiveSheet.Range("$A$1:$O$596").AutoFilter Field:=13, Criteria1:="A"
ActiveSheet.Range("$A$1:$O$596").AutoFilter Field:=6, Criteria1:="FULL"
ActiveSheet.Range("$A$1:$O$596").AutoFilter Field:=5, Criteria1:="-"
ActiveSheet.Range("$A$1:$O$596").AutoFilter Field:=3, Criteria1:=Array( _
"20lik", "40lik", "60lik"), Operator:=xlFilterValues
Yapmak istediğim
Kod:
Sub Filtre(ByVal KOLON As String, ByVal ARANAN As String)
Dim rng As Range, res As Variant
Set rng = Sheets("SAYFA1").AutoFilter.Range.Rows(1)
res = Application.Match(KOLON, rng, 0)
If Not IsError(res) Then
rng.AutoFilter Field:=res, Criteria1:=Array( _
ARANAN), Operator:=xlFilterValues
Else
MsgBox "Header1 was not found"
End If
End Sub
Sub dene()
Filtre KOLON:="Tür", ARANAN:="A"
Filtre KOLON:="Durum", ARANAN:="FULL"
Filtre KOLON:="Ekstra", ARANAN:="-"
Filtre KOLON:="Tip", ARANAN:="20lik"
End Sub
Gördüğünüz gibi 2. filtre kriterlerinde array var, ilk önce bu bana problem çıkarıyor. İkinci problemimse bir kere filtre yaptıktan sonra, filtreyi resetlemek gerekli.. Tam açıklayamadıysam kusura bakmayın, kısacası argüman alan autofilter yapmak istiyorum.
