JTPediaQuiz - Bank Soal, Quiz Interactive, Contoh-contoh Soal Ujian Sekolah, Uji Kompetensi, Ulangan Harian, DLL. More info

Menampilkan dan Mencari Data ListBox

More Info:

Listbox merupakan salah satu object standard yang biasanya digunakan untuk menampilkan data sebuah tabel atau beberapa tabel sekaligus. Pada sebuah listbox bisa memilih beberapa item yang sudah ditampilkan. Untuk keperluan tertentu, jika datanya relatif banyak biasanya pencarian data untuk memilih dan mencari data pada sebuah listbox sangat diperlukan.

Trik, Custom, dan Cara Menampilkan serta Mencari Data Pada ListBox

Langkah pertama, sebelum menampilkan dan mencari data pada sebuah listbox menggunakan Macro dan VBA Excel, silahkan buka aplikasi excel, buat file baru, dan buat dulu data pada sheets excel yang menampung data-data yang diperlukan sesuai kebutuhan.
Pada contoh project ini, misalnya sheets name excel yang diperlukan diberi nama "data_pembayaran_keuangan_siswa", dimana headernya dari mulai baris ke-4 yang berisi: ID, NIS/NISN, Nama Siswa, Kelas, Jenis Kelamin, dan Nominal Pembayaran. Sebelum baris ke-4 ditambahkan 1 object / shapes (Load ListBox) yang nantinya digunakan untuk assign macro. Dan data-data utamanya diisi mulai baris ke-5 seperti gambar berikut
sheet data pembayaran keuangan

Langkah selanjutnya bagaimana trik, custom dan cara menampilkan serta mencari data pada listbox menggunakan Macro dan VBA Excel

  • Buka visual basic editor (atau menggunakan ALT + F11)
  • Buat 1 buah user form dan berinama misalnya ListBox_Cari_Data
    Setelah form ListBox_Cari_Data dibuat silahkan gunakan toolbox untuk menambahkan beberapa object yang diperlukan:
    • 1 buah textbox: sCariListBox
    • 2 commandbutton: btnCARI dan btnREFRESH
    • 1 buah listbox: LBDetailSISWA
    • 2 label: sTotalDATA dan sINFO
    Setelah semua di tambahkan pada form ListBox_Cari_Data, susun sperti gambar berikut:
    form listbox untuk menampilkan dan mencari data
  • Buat/tambahkan (silahkan copy dan paste) code berikut pada form ListBox_Cari_Data yang sudah dibuat sebelumnya

    Option Explicit
    Dim wsBayarSPP As Worksheet
    Dim xR As Integer, yR As Integer, xCARI As Integer, yCARI As Integer, strCARI As String

    Private Sub UserForm_Initialize()
    Set wsBayarSPP = ThisWorkbook.Worksheets("data_pembayaran_keuangan_siswa")
    Call Data_Total_ListBox
    End Sub

    Sub Data_Total_ListBox()
    'Untuk menapilkan data total tabel pada listbox
    Dim cNIS_NISNx As String, cNAMAx As String
    Dim S As Long, baris As Long

    With LBDetailSISWA
    .Visible = False
    .Clear
    .ColumnCount = 6
    .ColumnHeads = False
    .ColumnWidths = "0,75,120,60,50,30"

    .AddItem
    .List(0, 0) = "ID"
    .List(0, 1) = "NIS / NISN": .List(0, 2) = "NAMA SISWA"
    .List(0, 3) = "KELAS": .List(0, 4) = "J-K"
    .List(0, 5) = "NOMINAL"

    For baris = 5 To GetRowSPP
    .AddItem
    .List(S + 1, 0) = wsBayarSPP.Cells(baris, "A") 'ID
    .List(S + 1, 1) = wsBayarSPP.Cells(baris, "B") 'NIS
    .List(S + 1, 2) = wsBayarSPP.Cells(baris, "C") 'NAMA
    .List(S + 1, 3) = wsBayarSPP.Cells(baris, "D") 'KELAS
    .List(S + 1, 4) = wsBayarSPP.Cells(baris, "E") 'JK
    .List(S + 1, 5) = wsBayarSPP.Cells(baris, "F") 'NOMINAL
    S = S + 1
    Next
    .Visible = True
    End With

    sTotalDATA.Caption = " Total Entry: " & S & " Data"
    xR = 0: yR = 0 'reset default variabel
    End Sub

    Private Sub sCariListbox_Change()
    If sCariListBox = Empty And xR = 1 Then Application.OnTime Now(), "Reload_ListBox"
    End Sub

    Private Sub sCariListBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If yR = 1 Then xR = 1
    End Sub

    Private Sub btnCARI_Click()
    If sCariListBox = Empty Then
    MsgBox "Tikda Ada Data yang DICARI...!!!", vbExclamation, "Info"
    sCariListBox.SetFocus
    Else
    Call Cari_Data_ListBox
    sCariListBox.SetFocus
    End If
    End Sub

    Private Sub btnREFRESH_Click()
    If yR > 0 Then Call Data_Total_ListBox
    sCariListBox = Empty
    sCariListBox.SetFocus
    End Sub

    Private Sub LBDetailSISWA_Click()
    If LBDetailSISWA.ListIndex > 0 Then
    If strCARI = Empty Then
    sCariListBox = LBDetailSISWA.List(LBDetailSISWA.ListIndex, 2) 'sesuai kebutuhan
    Else
    sCariListBox = strCARI
    End If

    strCARI = Empty 'reset @click listbox
    If yR = 1 Then xR = 1
    Else
    xR = 0
    sCariListBox = Empty
    End If
    End Sub

    Sub Cari_Data_ListBox()
    Dim cNIS_NISNx As String, cNAMAx As String, cKELASx As String, cJKx As String, cNOMINALx As String
    Dim S As Long, baris As Long

    Application.ScreenUpdating = False
    With LBDetailSISWA
    .Visible = False
    .Clear
    .ColumnCount = 6
    .ColumnHeads = False
    .ColumnWidths = "0,75,120,60,50,30"

    .AddItem
    .List(0, 0) = "ID"
    .List(0, 1) = "NIS / NISN": .List(0, 2) = "NAMA SISWA": .List(0, 3) = "KELAS": .List(0, 4) = "J-K"
    .List(0, 5) = "NOMINAL"

    If xCARI = 0 Then
    For baris = 5 To GetRowSPP
    cNIS_NISNx = wsBayarSPP.Cells(baris, "B")
    cNAMAx = wsBayarSPP.Cells(baris, "C")
    cKELASx = wsBayarSPP.Cells(baris, "D")
    cJKx = wsBayarSPP.Cells(baris, "E")
    cNOMINALx = wsBayarSPP.Cells(baris, "F")

    If UCase(cNIS_NISNx) Like "*" & UCase(sCariListBox) & "*" Or _
    UCase(cNAMAx) Like "*" & UCase(sCariListBox) & "*" Or _
    UCase(cKELASx) Like "*" & UCase(sCariListBox) & "*" Or _
    UCase(cJKx) Like "*" & UCase(sCariListBox) & "*" Or _
    UCase(cNOMINALx) Like "*" & UCase(sCariListBox) & "*" Then

    .AddItem
    .List(S + 1, 0) = wsBayarSPP.Cells(baris, "A") 'ID
    .List(S + 1, 1) = cNIS_NISNx
    .List(S + 1, 2) = cNAMAx
    .List(S + 1, 3) = cKELASx
    .List(S + 1, 4) = cJKx
    .List(S + 1, 5) = cNOMINALx
    S = S + 1
    End If
    Next

    sTotalDATA.Caption = " Hasil Pencarian: " & S & " Data"
    Call CekHasilPencarianData
    Else
    For baris = 5 To GetRowSPP
    cNIS_NISNx = wsBayarSPP.Cells(baris, "B")
    cNAMAx = wsBayarSPP.Cells(baris, "C")
    cKELASx = wsBayarSPP.Cells(baris, "D")
    cJKx = wsBayarSPP.Cells(baris, "E")
    cNOMINALx = wsBayarSPP.Cells(baris, "F")

    If UCase(cNIS_NISNx) = UCase(sCariListBox) Or UCase(cNAMAx) = UCase(sCariListBox) Or _
    UCase(cKELASx) = UCase(sCariListBox) Or UCase(cJKx) = UCase(sCariListBox) Or _
    UCase(cNOMINALx) = UCase(sCariListBox) Then

    .AddItem
    .List(S + 1, 0) = wsBayarSPP.Cells(baris, "A") 'ID
    .List(S + 1, 1) = cNIS_NISNx
    .List(S + 1, 2) = cNAMAx
    .List(S + 1, 3) = cKELASx
    .List(S + 1, 4) = cJKx
    .List(S + 1, 5) = cNOMINALx
    S = S + 1
    End If
    Next

    sTotalDATA.Caption = " Hasil Pencarian: " & S & " Data"
    xCARI = 0 'reset xCARI awal
    Call SetFocusHasilCari 'alternatif
    End If

    .Visible = True
    End With

    xR = 1: yR = 1
    Application.ScreenUpdating = True
    End Sub

    Sub SetFocusHasilCari()
    'alternatif
    'Set focus hasil pencarian jika hasil cari sama persis dengan data di tabel/list box (*)
    Dim i As Integer, j As Integer
    With LBDetailSISWA
    .ListIndex = -1
    For i = 1 To .ListCount - 1
    For j = 1 To .ColumnCount - 1
    If InStr(1, .Column(j, i), sCariListBox, vbTextCompare) Then
    If UCase(.Column(j, i)) = UCase(sCariListBox) Then
    .ListIndex = i '(*)
    Exit Sub 'STOP jika sudah ada data yang sama persis
    End If
    End If
    Next j
    DoEvents
    Next i
    End With
    End Sub

    Sub CekHasilPencarianData()
    'Cek hasil pencarian data yang mirip atau sama persis
    'Jika data yang dicari sama persis dengan data pada listbox, pencarian dan filtering data akan diterukan (dicari ulang)
    Dim i As Integer, j As Integer
    With LBDetailSISWA
    .ListIndex = -1
    For i = 1 To .ListCount - 1
    For j = 1 To .ColumnCount - 1
    If InStr(1, .Column(j, i), sCariListBox, vbTextCompare) Then
    If UCase(.Column(j, i)) = UCase(sCariListBox) Then
    xCARI = 1 'control cari data Cari_Data_ListBox
    strCARI = sCariListBox
    Call Cari_Data_ListBox 'pencarian dan filtering ulang
    Exit Sub 'STOP jika sudah menemuka data yang sama persis
    Else
    strCARI = Empty
    End If
    End If
    Next j
    DoEvents
    Next i
    End With
    End Sub

  • Selanjutnya buat module (module1) dan tambah beberapa kode seperti berikut:
    Option Explicit
    Function GetRowSPP()

    Dim wsBayarSPP As Worksheet
    Set wsBayarSPP = ThisWorkbook.Worksheets("data_pembayaran_keuangan_siswa")
    GetRowSPP = wsBayarSPP.Range("A" & wsBayarSPP.Rows.Count).End(xlUp).Row

    End Function

    Sub Load_ListBox()
    ListBox_Cari_Data.Show
    End Sub

    Sub Reload_ListBox()
    ListBox_Cari_Data.Data_Total_ListBox
    End Sub

  • Untuk menampilkan listbox dengan object button Load ListBox pada sheet yang sudah dibuat sebelumnya
    Klik kanan object button Load ListBox ⟾ Assign Macro ⟾ Pada Macro Name, pilih Load_ListBox seperti berikut:
    Assign Macro Load ListBox
  • Langkah terakhir, silahkan save file project macro vba excel ini, misalnya "cara menampilkan dan mencari data listbox.xlsm" atau "show and search data listbox.xlsm" atau apapaun

Contoh Data Total yang Ditampilkan pada ListBox

Jika semua kode sudah dibuat dengan benar dan tidak ada kesalahan, berikut ini contoh semua data yang ditampilkan pada listbox
Cara menampilkan data pada listbox

Contoh Variasi Tampilan Hasil Pencarian Data pada Listbox

  • Hasil pencarian data (sebagai contoh string 4500) yang mirip dengan data pada listbox
    Hasil Pencarian Data pada Listbox
  • Hasil pencarian data nama siswa (sebagai contoh nama tess) yang mirip dengan data pada listbox
    Hasil Pencarian Data pada Listbox
  • Hasil pencarian data kelas (sebagai contoh text XII BAHASA) yang sama persis dengan data pada listbox
    Hasil Pencarian Data pada Listbox
  • Hasil pencarian data nama siswa (sebagai contoh sample siswa 100) yang sama persis dengan data pada listbox
    Hasil Pencarian Data pada Listbox

Download Project Pencarian Data pada Listbox

Sebagai contoh project excel yang sudah jadi tentang bagaimana trik, custom dan cara menampilkan serta mencari data pada listbox menggunakan Macro dan VBA Excel, silahkan langsung DOWNLOAD

Aplikasi/Project yang Menggunakan Pencarian Data pada ListBox

Powered by Blogger.