Skip to main content

Mengurutkan Item Dalam List Box

Pada situasi tertentu, urutan item-item yang tersimpan mungkin tidak sesuai dengan yang kita inginkan. Di sisi lain, kita tidak bisa mengurutkan item-item itu, karena list box memang didesain untuk menghindarkan pengguna mengetikkan sesuatu ke dalam daftar. Dengan demikian, kita hanya bisa menambahkan atau mengurangi item dalam list box.
Contohnya seperti pada Gambar 1 di bawah ini, di mana item pada list box Nama Olah Raga Yang Dipilih mempunyai urutan:sepak bola, renang, bulutangkis, bola voli, bola basket, bola tenis, dan tenis meja. Padahal, urutan yang diinginkan adalah sebagai berikut:sepak bola, tenis meja, bola tenis, renang, bulutangkis, bola voli, dan bola basket. Untuk mengurutkan item-item dalam list box itu, kita harus menyusun ulang dengan menekan tombol Kembalikan, untuk kemudian kita susun kembali urutannya dengan menekan tombol Tambahkan item yang diinginkan.
Gambar 1
Untuk memudahkan pengguna mengurutkan item pada list box Nama Olah Raga Yang Dipilih, kita dapat membuat tombol yang berfungsi untuk menaikkan atau menurunkan item sesuai dengan keinginan. Caranya:
  1. Bukalah dalam format design view, form yang sudah dibuat pada postingan yang berjudul Memindahkan Data Antar Dua List Box. Jika form itu belum ada, maka buatlah terlebih dahulu dengan mengikuti petunjuk yang ada di posting itu..
  2. Di sisi paling kanan, sisipkan dua buah tombol perintah naik dan turun dengan properti sebagai berikut:
    1. Tombol perintah Naikkan, properti:
      1. Name=Naikkan
      2. Caption= Naikkan
      3. Picture=pilih gambar arrow up pada picture builder
      4. On Click-[Event Procedure], lihat kode VBA di bawah
    2. Tombol perintah Turunkan, properti:
      1. Name=Turunkan
      2. Caption=Turunkan
      3. Picture=pilih gambar arrow down pada picture builder
      4. On Click-[Event Procedure], lihat kode VBA di bawah
Design view dari form yang sudah diberi dua tombol naik dan turun tampak seperti Gambar 2. Pada bagian sebelah kanan, ada dua tombol yang diarsir, sebagai berikut:
Gambar2
Salinlah kode VBA berikut ini dalam modul form:
  1. Private Sub Naikkan_Click()  
  2.   Dim oItem, oTemp, selectedItem, selectedTemp As Variant  
  3.   Dim p, i As Integer  
  4.   With Me.lstOlahRagaYgDipilih  
  5.     If .ItemsSelected.Count > 1 Then  
  6.       MsgBox "Jumlah item yang dipilih dalam list box tidak lebih dari 1"  
  7.       Exit Sub  
  8.     End If  
  9.     oItem = Split(.RowSource, ";")  
  10.     i = 0  
  11.     For Each selectedItem In .ItemsSelected  
  12.       If selectedItem = LBound(oItem) Then Exit Sub  
  13.       If i = 0 Then p = selectedItem  
  14.       ReDim oTemp(.ListCount)  
  15.       For i = LBound(oItem) To UBound(oItem)  
  16.         If i = selectedItem - 1 Then  
  17.           selectedTemp = Chr(39) & .ItemData(i) & Chr(39)  
  18.           oTemp(i) = Chr(39) & .ItemData(selectedItem) & Chr(39)  
  19.           oItem(i + 1) = selectedTemp  
  20.         Else  
  21.           oTemp(i) = oItem(i)  
  22.         End If  
  23.       Next i  
  24.     Next selectedItem  
  25.     ReDim Preserve oTemp(.ListCount - 1)  
  26.     .RowSource = Join(oTemp, ";")  
  27.     .Selected(p - 1) = True  
  28.   End With  
  29. End Sub  
  30. Private Sub Turunkan_Click()  
  31.   Dim oItem, oTemp, selectedItem, selectedTemp As Variant  
  32.   Dim p, i As Integer  
  33.   With Me.lstOlahRagaYgDipilih  
  34.     If .ItemsSelected.Count > 1 Then  
  35.       MsgBox "Jumlah item yang dipilih dalam list box tidak lebih dari 1"  
  36.       Exit Sub  
  37.     End If  
  38.     oItem = Split(.RowSource, ";")  
  39.     For Each selectedItem In .ItemsSelected  
  40.       If selectedItem = UBound(oItem) Then Exit Sub  
  41.       If i = 0 Then p = selectedItem  
  42.       ReDim oTemp(.ListCount)  
  43.       i = 0  
  44.       For i = LBound(oItem) To UBound(oItem)  
  45.         If i = selectedItem + 1 Then  
  46.           selectedTemp = .ItemData(i - 1)  
  47.           oTemp(i - 1) = Chr(39) & .ItemData(i) & Chr(39)  
  48.           oTemp(i) = Chr(39) & selectedTemp & Chr(39)  
  49.         Else  
  50.           oTemp(i) = oItem(i)  
  51.         End If  
  52.       Next i  
  53.     Next selectedItem  
  54.       ReDim Preserve oTemp(.ListCount - 1)  
  55.     .RowSource = Join(oTemp, ";")  
  56.     .Selected(p + 1) = True  
  57.   End With  
  58. End Sub  
Bila form dibuka dengan form view, item pada list box Nama Olah Raga Yang Dipilih yang ada pada Gambar 1 dapat diurutkan seperti tampak pada Gambar 3 di bawah ini.
Gambar 3

Comments

Posting Terpopuler

Cara Mengatur dan Menggunakan ODBC untuk Mengakses Data Eksternal

Memahami Properti Validation Rule dan Validation Text pada Tabel di Access

Memahami Referential Integrity Saat Membuat Relasi di Access