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:
Private Sub Naikkan_Click()
  Dim oItem, oTemp, selectedItem, selectedTemp As Variant
  Dim p, i As Integer
  With Me.lstOlahRagaYgDipilih
    If .ItemsSelected.Count > 1 Then
      MsgBox "Jumlah item yang dipilih dalam list box tidak lebih dari 1"
      Exit Sub
    End If
    oItem = Split(.RowSource, ";")
    i = 0
    For Each selectedItem In .ItemsSelected
      If selectedItem = LBound(oItem) Then Exit Sub
      If i = 0 Then p = selectedItem
      ReDim oTemp(.ListCount)
      For i = LBound(oItem) To UBound(oItem)
        If i = selectedItem - 1 Then
          selectedTemp = Chr(39) & .ItemData(i) & Chr(39)
          oTemp(i) = Chr(39) & .ItemData(selectedItem) & Chr(39)
          oItem(i + 1) = selectedTemp
        Else
          oTemp(i) = oItem(i)
        End If
      Next i
    Next selectedItem
    ReDim Preserve oTemp(.ListCount - 1)
    .RowSource = Join(oTemp, ";")
    .Selected(p - 1) = True
  End With
End Sub
Private Sub Turunkan_Click()
  Dim oItem, oTemp, selectedItem, selectedTemp As Variant
  Dim p, i As Integer
  With Me.lstOlahRagaYgDipilih
    If .ItemsSelected.Count > 1 Then
      MsgBox "Jumlah item yang dipilih dalam list box tidak lebih dari 1"
      Exit Sub
    End If
    oItem = Split(.RowSource, ";")
    For Each selectedItem In .ItemsSelected
      If selectedItem = UBound(oItem) Then Exit Sub
      If i = 0 Then p = selectedItem
      ReDim oTemp(.ListCount)
      i = 0
      For i = LBound(oItem) To UBound(oItem)
        If i = selectedItem + 1 Then
          selectedTemp = .ItemData(i - 1)
          oTemp(i - 1) = Chr(39) & .ItemData(i) & Chr(39)
          oTemp(i) = Chr(39) & selectedTemp & Chr(39)
        Else
          oTemp(i) = oItem(i)
        End If
      Next i
    Next selectedItem
      ReDim Preserve oTemp(.ListCount - 1)
    .RowSource = Join(oTemp, ";")
    .Selected(p + 1) = True
  End With
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

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access