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 <[email protected]>
> **
>
>
> 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 <[email protected]>
>
> *Kepada:* [email protected]
> *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 <[email protected]>
>
> **
>
> 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
>
> ------------------------------
> **
>
>
>
>
>
>