Pencarian Data Di ListBox VBA Excel

 Aplikasi Excelku. Sobat Excel semuanya, pada kesempatan ini Saya akan mencoba untuk memberikan sebuah contoh membuat sebuah Userform dimana didalam Useerform tersebut, dan sesuai dengan judul artikel ini nantinya kita akan menyisipkan sebuah listbox sebagai penampil dari data yang sudah kita tentukan sebelumnya (database). Kemudian untuk melakukan pencarian data didalam listbox tersebut akan Saya gunakan sebuah textbox sebagai media untuk memasukkan (input) kata kunci dalam pencarian data yang ada didalam listbox tersebut, dengan dibantu sebuah commandbutton sebagai eksekutor dalam pencarian data sesuai dengan kata kunci yang telah diinputkan kedalam textbox tadi.

Pencarian Data Di ListBox VBA Excel

 TAHAP 1

 Pertama-tama kita harus memiliki sebuah deret data yang nantinya akan kita jadikan sebagai database dan kita tampilkan kedalam listbox, pada contoh ini Saya sudah memiliki sebuah deret data seperti pada gambar di bawah ini :

Pencarian Data Di ListBox VBA Excel

 Seperti yang ditampilkan pada gambar di atas, disini Saya memiliki sebuah database yang merupakan database karyawan dari suatu perusahaan, dimana database tersebut diawali dari cell A1 sampai dengan cell F1, dan database tersebut terletak di Sheet1 yang sudah Saya ubah namanya (Rename) menjadi "DATA".

 Selanjutnya adalah membuat Range Dianamis, karena disini Saya akan menggunakan Range Dinamis dalam pemanggilan data (database)nya. Untuk membuat Range Dinamisnya silahkan klik pada tab menu Formula, kemudian klik pada tombol/opsi Name Range, perhatikan gambar di bawah ini :

Pencarian Data Di ListBox VBA Excel


Kemudian klik New :

Pencarian Data Di ListBox VBA Excel

Kemudian isikan "KARYAWAN" pada kolom Name, dan Copas kode ini kedalam kolom Refer to :

=OFFSET(DATA!$A$1;1;;COUNTA(DATA!$A$2:$A$100000);COUNTA(DATA!$1:$1))

Pencarian Data Di ListBox VBA Excel

Jika berhasil, akan muncul tanda seleki (garis titik-titik) disekitar Cell A2 sampai dengan Cell F2, kenapa yang terseleksi Cell A2 bukan A1? karena Saya memang sengaj mengambil datanya dari A2, jadi Cell A1 sampai F1 tidak Saya ikut sertakan (tidak akan Saya tampilkan ke dalam Listbox).

Perhatikan gambar di bawah ini :

Pencarian Data Di ListBox VBA Excel

Seperti yang ditampilkan gambar di atas, terdapat tanda seleksi (garis putus-putus).

Untuk tahapan membuat dan setting Database selesai, 

TAHAP 2

 Pada tahao kedua ini kita akan membuat/mendesain Userform beserta komponen lain yang kita butuhkan, untuk kita kita harus membuka halaman Visual Basic, buka dengan cara menekan tombol kombinasi Alt+F11 pada keyboard atau bisa juga dengan klik pada tab menu Developer kemudian klik Visual Basic.

 Didalam halaman/lembar kerja Visual Basic kita buat/sisipkan sebuah Useform, dengan cara klik pada menu insert kemudian pilih/klik pada userform, silahkan tentukan ukuran, warna, dan lainnya sesuai dengan keinginan. Kemudian sisipkan sebuah listbox dengan cara klik pada toolbox dan pilih Listbox, perhatikan gambar di bawah ini :

Pencarian Data Di ListBox VBA Excel

 Silahkan arahkan ke area Userform yang sudah kita sisipkan sebelumnya, silahkan sesuaikan ukuran, warna sesuai dengan keinginan masing-masing, dan berikut ini hasilnya :

Pencarian Data Di ListBox VBA Excel

 Berikutnya kita sisipkan sebuah textbox, dan taruh diatas listbox tadi, sesuaikan ukurannya dengan keingin masing-masing juga, dan berikut hasilnya :

Pencarian Data Di ListBox VBA Excel

 Selanjutnya, sisipkan CommandButton, dan tempatkan disamping TextBox tadi, kemudian copy CommandButton1 sehingga nantinya akan ada 2 (Cdua) CommandButton, dan hasilnya akan seperti berikut ini :

Pencarian Data Di ListBox VBA Excel

 Karena hasil copyan pada caption tertulis sama, yaitu CommandButton1 semua, tapi jika dicek pada propertiesnya akan berbeda, yaitu CommandButton1 dan CommandButton2.

 Jika komponennya sudah ada semua, sekarang kita ubah nama (Name) dari masing-masing komponen tersbut, tujuan adalah agar memudahkan kita dalam membedakan atau mengenali nama dari masing-masing komponen tersbut.

  • Ubah Name Userform1 menjadi FrmData;
  • Ubah Name Textbox1 menjadi TxtCari;
  • Ubah Name CommandButton1 menjadi CmdCari, kemudian ubah captionny menjadi Cari Data; 
  • Ubah Name CommandButton2 menjadi CmdReset, kemudian ubah captionnya menjadi Reset; dan
  • Ubah Name ListBox1 menjadi ListData.
Hasil akhir seperti berikut ini :

Pencarian Data Di ListBox VBA Excel

Untuk Tahap 2 selesai,.

TAHAP 3

Pada tahap ini kita akan menyisipkan kode macro ke masing-masing komponen tersebut agar bisa berfungsi seperti yang kita inginkan, dan berikut ini kode-kode macro tersebut :

1. Kode Macro Untuk Menampilkan Data Ke ListBox

Kode ini berfungsi untuk menampilkan database yang sudah kita buat sebelumnya, dan untuk kode ini Saya akan memasukkannya kedalam module, jadi kita harus menyisipkan sebuah module terlebih dulu, caranya klik pada menu insert kemudian klik module. Maka akan muncul sebuah module dengan nama module1. Kemudian silahkan Copas kode di bawah ini kedalam module1 tadi :

Sub TampilData()
'https://aplikasiexcelku.blogspot.com
On Error Resume Next
With FrmData.ListData
.RowSource = "KARYAWAN"
.ColumnCount = "4"
.ColumnWidths = "00;180;180;110"
.ColumnHeads = False
End With
'https://aplikasiexcelku.blogspot.com
End Sub

 Sedikit penjelasan mengenai kode di atas, pada Rowsource = "KARYAWAN" mengacu pada Range Dinamis yang sudah kita buat sebelumnya, kemudian pada ColumnCount = 4 karena data yang akan saya tampilkan kedalam ListBox (ListData) adalah sebanyak 4 (empat) kolom, yaitu dari kolom A ke kolom D, namun nantinya kolom A akan Saya sembunyikan dari tampilan ListBox (ListData), dengan demikian pada ColumnWidths = "00;180;180;110 pada deret nilai 00 merupakan cara untuk menyembunyikan kolom agar tidak tampil kedalam ListBox (LisData).

2. Kode Macro Untuk Userform (FrmData)


Untuk kode Macro yang ketiga ini digunakan dan sisipkan langsung kedalam Userform (FrmData), copas kode macro di bawah ini kedalam Userform (FrmData) :

Private Sub UserForm_Activate()
Me.TxtCari.SetFocus
'https://aplikasiexcelku.blogspot.com
End Sub

Private Sub UserForm_Initialize()
Call TampilData
'https://aplikasiexcelku.blogspot.com
End Sub

4. Kode Macro Untuk CommandButton1 (CmdCari)


Kode ini untuk mengeksekusi kata kunci yang diinputkan kedalam TxtCari, silahkan copas kode macro ini kedalam CmdCari, atau bisa juga langsung kedalam Userform :

Private Sub CmdCari_Click()
  If Me.TxtCari = "" Then
MsgBox "Tulis Nama Yang Akan Dicari Dulu Boss,..!!!", vbInformation, ".:: AplikasiExcelku ::."
Me.TxtCari.SetFocus
Exit Sub
'https://aplikasiexcelku.blogspot.com
End If
  If Me.TxtCari <> "" Then
Call FilterCari
On Error GoTo NamaKosong
Me.ListData.ListIndex = 0
Me.TxtCari.SetFocus
NamaKosong:
  If Err.Number = 380 Then
MsgBox "Maaf, Nama Yang Dicari Tidak Ditemukan.", vbInformation, ".:: AplikasiExcelku  ::."
Me.TxtCari = ""
Me.TxtCari.SetFocus
'https://aplikasiexcelku.blogspot.com
End If
Exit Sub
End If
End Sub

Selanjutnya Copas kode di bawah ini kedalam module1 yang tadi sudah kita sisipkan di atas, dibawah atau di atas kode untuk tampil data. Ingat copas ke module1 yak kode di bawah ini :

Sub FilterCari()
'https://aplikasiexcelku.blogspot.com
Dim NamaKolom As Range
Dim DListCount As Long
Dim WsData As Worksheet
Set WsData = Worksheets("DATA")
FrmData.ListData.RowSource = Empty
FrmData.ListData.Clear
FrmData.ListData.ColumnCount = 3
For Each NamaKolom In WsData.Range("B2:B" & WsData.Range("B" & WsData.Rows.Count).End(xlUp).Row)
  If UCase(LCase(NamaKolom)) Like "*" & UCase(LCase(FrmData.TxtCari)) & "*" Then
            DListCount = FrmData.ListData.ListCount
            'https://aplikasiexcelku.blogspot.com
            FrmData.ListData.AddItem
            FrmData.ListData.List(DListCount, 1) = NamaKolom.Offset(0, 0)
            FrmData.ListData.List(DListCount, 2) = NamaKolom.Offset(0, 1)
            FrmData.ListData.List(DListCount, 3) = NamaKolom.Offset(0, 2)
            
   End If
Next 
'https://aplikasiexcelku.blogspot.com
End Sub

5. Kode Macro Untuk CmdReset (CommandButton2)


Kode macro ini berfungsi untuk mengembalikan tampilan ListBox (ListData) seperti sedia kala, karena nantinya pada saat kita melakukan pencarian dan hasil pencarian nihil (kosong) maka secara otomatis tampilan dari ListBox (ListData) akan ikut hilang. Silahkan copas kode macro dibawah ini kedalam CmdReset atau bisa juga langsung kedalam Userform :

Private Sub CmdReset_Click()
'https://aplikasiexcelku.blogspot.com
With Me.ListData
Count = .ListCount - 1
For i = 0 To Count
.Selected(i) = False
Next i
End With
'https://aplikasiexcelku.blogspot.com
Call TampilData
Me.TxtCari.SetFocus
Me.TxtCari.Value = ""
End Sub

Jika semua langkah-langkah di atas dilakukan secara benar, maka seharusnya akan seperti pada gambar animasi di bawah ini :

Pencarian Data Di ListBox VBA Excel

Demikian artikel mengenai Pencarian Data Di ListBox VBA Excel, mudah-mudahan apa yang sudah Saya sampaikan pada kesempatan kali ini bisa bermanfaat untuk kita semuanya, terimakasih dan selamat mencoba.

Post a Comment for "Pencarian Data Di ListBox VBA Excel"