Filter sangat penting sekali untuk mempermudah user mencari data berdasarkan kriteria tertentu. Pada kesempatan kali ini saya akan bagikan salah satu cara filter data yang ada di listbox dengan kriteria tertentu.
Persiapan :
1. Siapkan sebuah worksheet dengan nama sheetnya "databarang" yang terdiri 5 kolom dengan rincian seperti di bawah ini :
2. Siapkan sebuah userform yang memiliki satu textbox dan satu listbox
Coding :
Berikut code yang diisi untuk filter di atas :
1. Membuat coding untuk pengisian listbox saat pertama kali ditampilkan
Private Sub UserForm_Activate()
Set ws = Sheets("databarang")
ws.Activate
ibow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(0, 0).Row
ListBox1.RowSource = "a2:e" & ibow
End Sub
2. Membuat sub tampilsemua untuk menampilkan semua isi data pada saat textbox kosong
Sub tampilsemua()
Set ws = Sheets("databarang")
ws.Activate
ibow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(0, 0).Row
If ibow > 3 Then
ListBox1.RowSource = "a2:e" & ibow
Else
ListBox1.RowSource = ""
End If
End Sub
3. Event yang dilakukan saat textbox1 terdapat perubahan
Private Sub TextBox1_Change()
If Me.TextBox1.Text = "" Then
tampilsemua
Else
Dim myTange As Range
Dim criteria As Range
Set ws = Sheets("databarang")
ibow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(0, 0).Row
Set myTange = ws.Range("a2:e" & ibow)
Set criteria = ws.Range("i2:i3")
ws.Range("i2") = "Nama Barang"
ws.Range("i3") = "*" & TextBox1.Text & "*"
myTange.AdvancedFilter xlFilterCopy, criteria, ws.Range("k2:o2"), False
ibow2 = ws.Cells(ws.Rows.Count, 11).End(xlUp).Offset(0, 0).Row
If ibow > 2 Then
ListBox1.RowSource = "k2:o" & ibow2
Else
ListBox1.RowSource = ""
End If
End If
End Sub
Semoga bermanfaat