Bu derste, bir kutuya yazdığınız anda tabloyu otomatik filtreleyen bir arama konsolunu VBA ile yapacağız — Excel'in yerleşik FİLTRE formülünün olmadığı eski sürümlerde bile çalışan bir yöntem.
Worksheet_Change: Bir Hücre Değiştiğinde Otomatik Çalışan Kod
Normal makrolardan farklı olarak, bu kod bir düğmeye değil, bir hücrenin değişmesine bağlı çalışır. VBA editöründe ilgili sayfaya çift tıklayıp üstteki açılır listeden Worksheet, yandan Change seçtiğinizde otomatik bir şablon oluşur:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim arama As String
arama = Worksheets("Sayfa1").Range("C4").Value
ActiveSheet.Range("A1:C15").AutoFilter Field:=1, _
Criteria1:="*" & arama & "*"
End Sub
Target As Range: hangi hücrenin değiştiğini temsil eder."*" & arama & "*": yıldız (*) joker karakterleriyle, arama kutusundaki metnin herhangi bir yerde geçmesi yeterli olacak şekilde filtre kurar.
Arama Kutusu Boşaltıldığında Tüm Veriyi Göstermek
Private Sub Worksheet_Change(ByVal Target As Range)
Dim arama As String
arama = Worksheets("Sayfa1").Range("C4").Value
If arama = "" Then
ActiveSheet.ShowAllData
Else
ActiveSheet.Range("A1:C15").AutoFilter Field:=1, _
Criteria1:="*" & arama & "*"
End If
End Sub
Bu If kontrolü olmadan, arama kutusunu boşalttığınızda hiçbir sonuç gelmemesi riski vardır — If ile boş kutu özel olarak ele alınıp tüm veri geri gösterilir.
Dosyayı Kaydetmeyi Unutmayın
Bu kod bir olaya bağlı çalıştığı için, dosyayı Makro İçerebilen Excel Çalışma Kitabı (.xlsm) olarak kaydetmeniz gerekir — aksi halde kod kaybolur.
Sırada Ne Var?
Sırada, seçtiğiniz hücrenin bulunduğu satır ve sütunu otomatik vurgulayan bir görsel geliştirme var.