Minggu, 16 September 2018

Coding VBA Macro Excel Filter Data ListBox

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

0 comments:

Posting Komentar