Loading ...
Sorry, an error occurred while loading the content.
 

Re: [belajar-excel] Filter Range kemudian memasukkannya dalam ListBox UserForm

Expand Messages
  • Mr. Kid
    Dear Harry, Pembahasan No. 1: Tentang sheet terproteksi, coba : 1. Cell E1 akan mengalami proses perubahan nilai cell melalui VBA. Maka buat cell tersebut
    Message 1 of 11 , Sep 6, 2011
      Dear Harry,

      Pembahasan No. 1:
      Tentang sheet terproteksi, coba :
      1. Cell E1 akan mengalami proses perubahan nilai cell melalui VBA. Maka buat cell tersebut menjadi UnLocked, yaitu dengan :
          Klik kanan cell E1 -> Format Cell -> Protection -> hilangkan centang dari Locked -> tekan OK

      2. Sheet ingin diproteksi tapi masih bisa melakukan Find by xlFormulas melalui VBA, yaitu dengan :
          protect sheet hingga muncul dialog tentang penentuan password untuk worksheet -> lihat opsi yang dicentang, yaitu pilih (centang) Select Locked cells dan juga centang Select UnLocked cells, kemudian tekan OK.

      Tentang mendapatkan banyak hasil find :
      1. Loop proses search. Mungkin begini (dicoba, karena ini hanya imajinasi saja).
      Pastikan seluruh kolom E di-unlocked dengan :
      unprotect sheet lebih dulu -> blok seluruh cell di kolom E -> klik kanan -> format cell -> protection -> hilangkan centang dari locked -> tekan OK -> lakukan protect sheet lagi
      Kemudian coba prosedur berikut :
      Private Sub CommandButton1_Click()
         Dim xCell As Range
         dim lRow as long

         AwalPutaran:
         Set xCell = Cells.Find(What:=TextBox1.Text, _
            After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
       
         If Not xCell Is Nothing Then
            xCell.Activate
            Range("E1") = xCell.Address(lrow, 0)
            lrow=lrow+1
            goto AwalPutaran
         Else
            Range("E1") = ""
            MsgBox "DATA YANG ANDA CARI TIDAK DITEMUKAN. PERIKSA KEMBALI PENULISANNYA", vbExclamation, "Hasil Pencarian"
            exit sub
         End If
      End Sub

      2. Jika memang sekedar eksplorasi data, mungkin sebaiknya file data diletakkan pada file lain (terpisah dengan file aplikasi), kemudian manfaatkan Get External Data. Pada file aplikasi, ubah SQLCommandText pada bagian klausa WHERE untuk memfilter data yang diinput oleh User. Hal ini bisa dilakukan untuk multi kriteria.

       
      Pembahasan No. 3:
      Coba file dengan autofilter tempo hari. Jika ingin lebih mudah dan simple, pisahkan file data dengan file aplikasi, kemudian manfaatkan fitur get external data (Import data di xl2003).
      Pelajari SQL agar imajinasi bisa berkembang dengan liar.

      Pembahasan No. 2:
      Tempo hari ingin menggunakan listbox di sebuah userform sebagai media interface. Paling mudah adalah memanfaatkan properti RowSource yang dimiliki ListBox. Repotnya, jika tanpa menggunakan fitur Get External Data, dibutuhkan pengaturan tabel temporary (untuk jadi rowsource di listbox) yang susunannya diatur urutan kolomnya dengan perintah-perintah copy paste dan delete kolom tabel temporary.

      Jika tidak menggunakan properti rowsource, maka proses add item pada listbox sudah harus dilakukan berurutan sesuai kolomnya. Pada contoh dari mbak Siti yang bunyinya :
      Private Sub ComboBox1_Change()
         ' siti Vi / 21 Jul 2011
         '----------------------
         Dim HeadArray(), r As Long, n As Long, c As Integer
         ReDim HeadArray(0 To Tbl.Columns.Count - 1)
         With ListBox1
            .ColumnCount = Tbl.Columns.Count
            .Clear
            ' Header dlm listbox
            For c = 0 To Tbl.Columns.Count - 1
                HeadArray(c) = Tbl(2, c + 1)
            Next c
            .AddItem: .Column() = HeadArray
            n = 0: r = 0: c = 0
            ' items dlm listbox
            For r = 3 To Tbl.Rows.Count
               If ComboBox1.ListIndex > -1 Then
                  If Tbl(r, 3) = ComboBox1 Then
                     n = n + 1
                     For c = 1 To Tbl.Columns.Count
                        .AddItem: .List(n, c - 1) = Tbl(r, c)
                     Next c
                  End If
               End If
            Next r
         End With
      End Sub
      bagian yang di-bold adalah bagian yang mengatur proses baca data dan memasukkan ke listbox. Ubah bagian tersebut (tambah/kurang).

      Regards.
      Kid.

      2011/9/5 Harry <hariansyahptk@...>
       

      Dear Moderator (Mr. Kid),

      Terima kasih atas info dan lampirannya.
      Namun sebagaimana pembahasan tersebut, dapat saya infokan sbb:
       
      Pembahasan No. 1:
      Jika pada saat proses terhadap range melalui VBA, tidak bisa diprotect, berarti mungkin saya tidak bisa menggunakan cara atau rumus ini karena pada Worksheet yang saya buat tersebut langsung digunakan oleh banyak user. Yang saya kuatirkan adalah jika Worksheet tersebut tidak diprotect, kemungkinan besar datanya akan dihapus atau diganti oleh user yang tidak bertanggungjawab.
       
      Sebagai referensi, saya pernah mendapat info dan rumus dari moderator Belajar-Excel sebelumnya sbb:
       
      Private Sub CommandButton1_Click()
         Dim xCell As Range
         Set xCell = Cells.Find(What:=TextBox1.Text, _
            After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
       
         If Not xCell Is Nothing Then
            xCell.Activate
            Range("E1") = xCell.Address(0, 0)
         Else
            Range("E1") = ""
            MsgBox "DATA YANG ANDA CARI TIDAK DITEMUKAN. PERIKSA KEMBALI PENULISANNYA", vbExclamation, "Hasil Pencarian"
         End If
      End Sub
       
      Pada rumus tersebut, Worksheetnya memang tidak bisa diprotect tetapi jika rumus
      After:=ActiveCell, LookIn:=xlFormulas,  saya ganti dengan After:=ActiveCell, LookIn:=xlValues, maka Worksheet tersebut bisa diprotect (xlFormulas diganti dengan xlValues).
      Namun, pada rumus dan cara tersebut, saya hanya bisa mendapatkan data yang kita cari satu persatu sedangkan sebagaimana pada program Excel, jika kita menggunakan Control+F, otomatis bisa memunculkan beberapa data sebagaimana input yang kita masukkan.
      Mohon penjelasannya.
       
      Pembahasan No. 3:
      Saya sudah mencoba menambahkan kreteria tambahan pada userform tapi saya masih mengalami kesulitan. Sebagai referensi, saya saya inginkan adalah:
      Pada Userform ada dua kreteria yaitu Cabang dan Nama Pejabat. Trus saya pilih Bandung dan Awaluddin, otomatis yang muncul hanya Bandung dan Awaluddin saja.
      Bagaimana caranya…???
       
      Pembahasan No. 2:
      Untuk pembahasan ini saya juga mengalami kesulitan. Bagaimana cara dan rumusnya jika kita ingin mencari data berdasarkan “Nama Pejabat” dan sekaligus data “Nama Pejabat” tersebut kita posisikan pada kolom Tanggal sedangkan kolom tanggal kita pindahkan pada kolom Nama Pejabat.
      Mohon informasi dan lampirannya.
       
      Terima kasih banyak atas info dan berkenan rumusnya.
       
      Regards,
       
       
      Harry


      Dari: Mr. Kid <mr.nmkid@...>Dikirim: Minggu, 4 September 2011 3:15

      Judul: Re: [belajar-excel] Filter Range kemudian memasukkannya dalam ListBox UserForm

       
      Dear Harry,

      No. 1.
      Biasanya pada saat proses terhadap range melalui VBA, pada sheet yang diproteksi tidak boleh select cells yang di locked, didahului dengan unprotect sheet. Usai proses dengan VBA diakhiri dengan protect sheet kembali.
      Contoh pada suatu event VBA :
              'unpritect dulu
              sheet1.unprotect "passwordnya"

              'disini seluruh proses pada prosedur ini


              'akhiri dengan protect sheet lagi
              sheet1.protect "passwordnya"

      No. 2.
      Ubah rujukan range yang merujuk ke kolom cabang menjadi merujuk ke kolom yang diinginkan. Pahami lebih dulu proses yang dilakukan terhadap contoh dengan kolom cabang tersebut. Range mana saja yang dirujuk oleh setiap baris kode dalam VBA. Nama range apa saja yang digunakan dan sebagainya. Kemudian ganti dengan rujukan yang dibutuhkan.

      No. 3.
      Menambahkan kriteria baru (jadi lebih dari 1), buat combobox untuk kriteria baru tersebut, terapkan proses seperti pada combobox cabang (seluruh prosedur event dan seluruh kegiatan terhadap combobox cabang) pada combobox baru dengan merujuk ke range atau seluruh komponen yang berkaitan.


      Hal tersebut memang cukup merepotkan dalam proses pembangunannya, dan tidak semua kemampuan autofilter bisa terpenuhi melalui userform. Mungkin memaksimalkan fitur autofilter dan sedikit menambah hiasan sheet beserta mengatur tampilannya akan lebih mudah.

      Regards.
      Kid.

      2011/9/2 Harry <hariansyahptk@...>
       
      Dear Moderator (Pakar Excel),
       
      Saya tertarik dengan pembahasan tentang “ctv ListBox Multi Kolom” ini dan ingin tahu lebih lanjut mengenai hal-2 sbb:
      1.       Jika pada table / sheet dimaksud kita lindungi dengan password apakah UserForm tersebut masih bisa difungsikan…??? Jika bisa, bagaimana caranya…??? Mohon berkenan lampirannya.
      2.       Untuk contoh pada Form dimaksud mengacu pada “Cabang”. Bagaimana caranya jika kita ingin menggantinya dengan mangacu pada “Tanggal” atau “Nama Pejabat”…???
      3.       Jika kita ingin membuatnya lebih spesifik, bisakah kita mengacu pada 2 kriteria, mis: “Cabang” dan “Nama Pejabat”…???
       
      Terima kasih atas berkanan jawabannya.
       
      Regards,
       
      Harry







    Your message has been successfully submitted and would be delivered to recipients shortly.