Control : Listbox

Prasyarat:


ListBox adalah sebuah elemen kontrol grafis yang memungkinkan pengguna untuk memilih satu atau beberapa item dari daftar pilihan yang terdapat dalam sebuah kotak yang umumnya terdiri dari beberapa baris.

Pengguna diberikan akses untuk mengeklik di dalam kotak pada item untuk memilihnya, terkadang dikombinasikan dengan Shift atau Ctrl untuk membuat beberapa pilihan sekaligus.

Untuk memudahkan pembahasan materi tentang Listbox, silahkan masuk terlebih dahulu ke Visual Basic Editor seperti yang sudah dibahas pada materi perkenalan Visual Basic Editor (VBA).

Buatlah sebuah Userform dan tambahkan sebuah Listbox kedalamnya. Silahkan design tampilan (UI) Userform dan juga listbox semenarik mungkin.

Dibawah ini adalah beberapa point property penting yang harus diubah dalam menggunakan Listbox.

ColumnCountJumlah Kolom Yang ingin ditampilkan (Default 1)
ColumnHeadUntuk Menampilkan Header (Berlaku hanya untuk RowSource)
ColumnWidthUntuk mengatur lebar masing-masing kolom

Untuk mengubah properti bisa melalui Propeties Windows atau bisa juga melalui script.

Cara Mengisi Data Listbox

Pertanyaan pertama yang muncul setelah berhasil membuat Listbox adalah, bagaimana cara kita mengisi data ke dalam Listbox?

Ada 3 cara yang bisa dilakukan untuk mengisi data ke listbox, semua cara-cara ini memiliki keuntungan dan kekurangan masing-masing, dan cara ini juga akan mempengaruhi script untuk proses selanjutnya dari Listbox misalnya pencarian data atau menghapus data.

Script untuk mengisi data ke Listbox bisa disimpan di Events initialize atau di Activate agar script untuk mengisi data dijalankan ketika Userform pertamakali dijalankan.

Private Sub UserForm_Initialize()

End Sub

1. AddItem

Cara pertama untuk menambahkan data kedalam Listbox adalah dengan menggunakan Additem. Cara ini digunakan dengan menambahkan data satu persatu kedalam table Listbox.

Kelebihan

  • Bisa menambahkan format kedalam setiap data
  • Data bisa dimanupulasi di Listbox

Kekurangan

  • Maximal Jumlah kolom Listbox hanya 10 saja
  • Tidak bisa memiliki Header

Untuk contoh data manual scriptnya bisa dilihat dibawah ini.

ListBox1.AddItem "Ini adalah data 1"
ListBox1.AddItem "Ini adalah data 2"
ListBox1.AddItem "Ini adalah data 3"
ListBox1.AddItem "Ini adalah data 4"

Untuk mempersingkat script diatas, seperti yang sudah dipelajari di Meteri Pernyataan With script bisa diringkas menjadi

With Listbox1
    .AddItem "Ini adalah data 1"
    .AddItem "Ini adalah data 2"
    .AddItem "Ini adalah data 3"
    .AddItem "Ini adalah data 4"
End With

Contoh lainnya, jika data berasal dari Range maka bisa ditambahkan dengan pengulangan (Looping)

For i=1 to 10
    With Listbox1
        .AddItem Worksheets("NamaSheet").Cells(i,2).value
    End With
Next i

Multi Column Additem

Jika data yang ingin dimasukan kedalam listbox lebih dari satu Column, maka untuk mengisi kolom lainnya bisa menggunakan List. Index Listbox selalu dimulai dari 0, untuk contohnya bisa dilihat dibawah ini

With Listbox1
    .AddItem 
    .List (.ListCount -1, 0) = "Ini adalah Data 1 kol 1"
    .List (.ListCount -1, 1) = "Ini adalah Data 1 kol 2"
    .List (.ListCount -1, 2) = "Ini adalah Data 1 kol 3"
    .AddItem 
    .List (.ListCount -1, 0) = "Ini adalah Data 2 kol 1"
    .List (.ListCount -1, 1) = "Ini adalah Data 2 kol 2"
    .List (.ListCount -1, 2) = "Ini adalah Data 2 kol 3"
End With

Contoh menggunakan pengulangan (Looping) dimana data diambil dari Range.

For i=1 to 10
    With Listbox1
        .AddItem 
        .List (.ListCount -1, 0) = Worksheets("NamaSheet").Cells(i,2).value
        .List (.ListCount -1, 1) = Worksheets("NamaSheet").Cells(i,6).value
        .List (.ListCount -1, 2) = Worksheets("NamaSheet").Cells(i,7).value
    End With
Next i

2. RowSource

Cara kedua adalah dengan menggunakan RowSource. Cara ini adalah dengan memberikan sebuah alamat range ke listbox, sisanya tinggal listbox yang mengaturnya.

Kelebihan

  • Bisa memiliki Header
  • Bisa memiliki lebih dari 10 kolom

Kekurangan

  • Data hanya bisa dimanipulasi di Range

Untuk contoh penggunaan script dari Rowsource secara sederhana bisa ditulis seperti dibawah ini :

ListBox1.RowSource = "A1:J10"

Cara diatas sudah cukup untuk mengisi data ke Listbox. Tetapi cara seperti ini kurang baik untuk dilakukan, karena data yang diambil adalah data dari sheet active saat ini, bukan dari sheet yang telah ditentukan.

Untuk menambahkan data kedalam Listbox dari sheet yang telah ditentukan, bisa menggunakan 2 cara, pertama bisa menggunakan Nama Range.

ListBox1.RowSource = "DataSaya"

Cara kedua adalah dengan menggunakan fungsi Address dengan External True

ListBox1.RowSource = Worksheets("NamaSheet").Range("A2:J10").Address(External:=True)

3. List

Cara ketiga adalah cara campuran dari kedua cara diatas, cara kerjanya mirip seperti rowsource tetapi data ditambahkan secara langsung ke Listbox seperti additem.

Data yang ditambahkan kedalam list bukanlah alamat range melainkan data array atau nilainya.

Kelebihan

  • Bisa memiliki lebih dari 10 kolom
  • Data bisa dimanupulasi di Listbox

Kekurangan

  • Tidak bisa memilki Header

Sederhananya data yang ditambahkan kedalam listbox berupa array, misalnya jika data yang ingin dimasukan kedalam listbox berupa data manual (Hardcode).

Script bisa ditulis seperti dibawah ini :

ListBox1.List= Array("Data1","Data2","Data3","Data4")

Contoh lainnya, misalkan jika data diambil dari alamat range, maka gunakan nilai .value agar nilai menjadi array.

ListBox1.List= Worksheets("NamaSheet").Range("A2:J10").Value

Trick dalam Listbox

Ini adalah beberapa trick yang bisa digunakan didalam Listbox

Header Untuk List dan Additem

Seperti yang sudah dibahas, Additem dan List tidak memiliki header data, solusinya kamu bisa menggunakan sebuah listbox untuk membuat header, malah secara tampilan ini bisa jadi lebih baik.

Menyembunyikan Kolom Tertentu di Listbox

Untuk menghilangkan kolom tertentu di Listbox, misalnya untuk data yang diambil melalui RowSource atau List, bisa diatur melalui ColumnWidth yang diatur ke 0

Contoh: Misalnya kolom 3 dan kolom 5 tidak ingin ditampilkan di Listbox, maka ColumnWidth nya bisa diset seperti dibawah ini.

Listbox1.ColumnWidth = "56;90;0;150;0;79"
List Tutorial
Apa yang sedang kamu cari?

Temukan beberapa kata kunci yang diinginkan.

Search