Mohon maaf sebelumnya. berhubung file kemarin terprotect maka kali ini saya ingin memberikan password tsb. Pass=" nariyah " Dan saya mohon untuk penjelasannya yang lebih mudah dipahami karena saya adalah pemula. seperti letak code2 nya dan susunannya. terima kasih
________________________________ Dari: Mr. Kid <mr.nm...@gmail.com> Kepada: belajar-excel@yahoogroups.com Terkirim: Sen, 15 Februari, 2010 22:44:35 Judul: Re: Bls: [belajar-excel] form Pencarian Assalamualaikum Wr. Wb. Yth. Bapak Syahdana Berhubung file dari Bapak terproteksi dan kurang santun jika dibongkar sandinya, maka saya coba memberi solusi berdasar alur program. Andai diperbolehkan, mungkin salinan kode atau file yang tak terproteksi VBA Project-nya bisa dilampirkan ulang. >> Tentang Tanggal di semua form Berdasar alur program, pada Menu Utama terdapat banyak cabang. Penentuan tanggal dilakukan di menu utama. => Tanggal untuk operasi pada form memanfaatkan worksheet Jika form yang dituju memanfaatkan worksheet, maka salin tanggal tersebut ke sebuah cell pada worksheet. Pada sebuah cell di worksheet tujuan, bisa tulis tanggal di menu utama tersebut. Misal : sheet yang dituju adalah sheet 'pemasukan'. cell yang dijadikan temporary adalah cell A4. Maka pada menu utama, ketika (event) tombol pemasukan ditekan Sheets("pemasukan").range("a4").value = _ dateserial( cInt(txtTahun. text), cInt(txtBulan. text), cInt(txtTanggal. text) ) => Tanggal untuk operasi pada form menggunakan user form GUI Jika form yang dituju adalah user form, maka bisa memanfaatkan sebuah variable ber-scope public (diletakkan pada modules). Setiap user form baru tampil (Show), set bagian event activate atau pada event init-nya untuk menampilkan tanggal berdasar variable tersebut. Tanggal disusun oleh Bapak debagai 3 part, yaitu tanggal, bulan, dan tahun. Pada form yang ditampilkan oleh sebuah worksheet (misal Iuran Kendaraan >> Tambah), juga tampil sebagai 3 part. Maka lebih mudah jika ada 3 variable dengan scope public, yang dibaca oleh setiap form ketika tampil. Andai tanggal pada form Tambah tersebut diijinkan untuk diubah nilainya (locked=False) , dan ingin tanggal di Menu Utama nanti juga mengikutinya, maka ubah nilai variable karena ada pengubahan nilai oleh user di form Tambah tersebut. Deklarasi variable ber-scope public diletakkan pada sebuah modules. (digunakan type data Long, karena asumsinya system operasi yang digunakan masih menggunakan Windows 32 bit) Public lTgl as Long Public lBln as Long Public lThn as Long >> tentang ComboBox berdasar input di sebuah textbox Jika nama barang telah dikelompokkan dalam range-range 1 kolom (1 kolom per jenis barang), maka memberi nama range per jenisnya, maka set pada combobox bisa dilakukan dengan mengubah property rowsource, sedangkan filter jenis barang berdasar combobox lain yang berisi jenis-jenis barang. Jika range nama barang adalah sebuah data 1 kolom (seluruh barang), maka bisa dilakukan loop pada range tersebut. Misal pada textbox yang menjadi filter diisi 'fre', dan range nama-nama barang telah ada : dim rngBrg as range dim rngTemp as range set rngBrg = sheets("referensi").range("D2:D51") cboComboku.clear for each rngTemp in rngBrg if instr(1, rngTemp.value, txtFilter.text, vbtextcompare) <> 0 then cboComboku.additem rngtemp.value end if next >> tentang cari nama Anggota Umumnya, menggunakan loop juga, terhadap range nama (kolom C). Saya lebih suka memanfaatkan fitur AutoFilter. Pertama : Untuk asumsi sekedar pencarian dan penampilan di sheet Anggota secara langsung, ketika tombol cari ditekan dan memasukkan sebuah text. dim rng as range Sheets("Anggota").Autofiltermode= false 'tanpa header karena ada baris kosong setelah header 'jika tidak ada baris kosong setelah header, maka header akan ikut terblok set rng = sheets("Anggota").range("b18").currentregion 'karena ada baris kosong tersebut, maka perlu definisi ulang isi object rng 'yaitu naik 1 baris (disini yang didapat adalah baris kosong tersebut) dengan offset(-1) 'kemudian perluas area dengan +1 dari jumlah baris yang didapat set rng pertama 'bagian ini tidak perlu jika header dan data tidak terpisah baris kosong set rng = rng.offset(- 1).resize( rng.rows. count+1) 'proses filter 'penggunaan wildcard character * setara dengan bahasa contain (ada) rng.autofilter field:=2, criteria1:="=*" & txtKriteria. text & "*" '---- kode di atas adalah kode dasar autofilter. hasil filter bisa diolah lebih lanjut. misal : 1. adakah data hasil filter ? if rng.specialcells( xlcelltypevisibl e).rows.count >1 then '>1 karena 1 adalah header 'kode jika ada data hasil filter end if 2. ada lebih dari 1 baris data hasil ? '>2 karena 1 adalah header, 1 lagi adalah baris data if rng.specialcells( xlcelltypevisibl e).rows.count >2 then 'kode jika ada data hasil filter end if 3. copy hasil filter rng.specialcells( xlcelltypevisibl e).copy 4. hapus seluruh baris hasil filter rng.specialcells( xlcelltypevisibl e).entirerow. delete 5. hapus hasil filter untuk kolom data saja, dan shift up rng.specialcells( xlcelltypevisibl e).entirerow. delete xlshiftup 6. filter lagi dengan kriteria filed alamat dari textbox input untuk alamat 'kolom alamat adalah kolom 3 dari yang diblok dalam object rng rng.autofilter field:=3, criteria1:="=*" & txtAlamat.text & "*" 7. filter lagi hanya untuk yang punya no telp rng.autofilter field:=4, criteria1:="<>" 8. lepas filter oleh alamat (jadi tinggal yang di-filter oleh nama dan yang punya no telp) rng.autofilter field:=3 9. tampilkan kembali semua sheets("Anggota").autofiltermode= false atau sheets("Anggota").showalldata Kedua : dengan asumsi, sekedar ingin tahu ada berapa yang sesuai dengan kriteria dim rng as range dim lData as long Sheets("Anggota").Autofiltermode= false 'tanpa header karena ada baris kosong setelah header 'jika tidak ada baris kosong setelah header, maka header akan ikut terblok set rng = sheets("Anggota").range("b18").currentregion. offset(0, 1).resize( columnsize: =1) 'karena ada baris kosong tersebut, maka perlu definisi ulang isi object rng 'yaitu naik 1 baris (disini yang didapat adalah baris kosong tersebut) dengan offset(-1) 'kemudian perluas area dengan +1 dari jumlah baris yang didapat set rng pertama 'bagian ini tidak perlu jika header dan data tidak terpisah baris kosong set rng = rng.offset(- 1)..resize( rng.rows. count+1) 'kode ini hanya menghasilkan bilangan >=0 'error jika object rng tidak ada isinya 'tidak dapat mengkalkulasi range yang memiliki banyak area (misal karena telah terfilter) ldata = worksheetfunction( rng, "*" & txtKriteria. text & "*") dari kode di atas, barulah diadakan proses selanjutnya, misal : 1. Ada berapakah hasil yang sesuai ? jawabnya adalah sejumlah nilai dalam variabel lData 2. lebih dari 1 kah ? if lData > 1 then 'kode karena lebih dari 1 data yang sesuai end if 3. ambil data pertama yang sesuai, dan tampilkan (misal dalam msgbox) 'penggunaan cek terhadap lData hasil countif() akan menghindarkan dari error oleh 'proses fungsi match() if lData <> 0 then lData = worksheetfunction. match("*" & txtkriteria. text & "*", rng,0) msgbox rng.cells(ldata) end if property row akan menghasilkan baris excel-nya contoh : ldata=rng.cells( ldata).row maka ldata akan berisi nomor baris dari nama pertama yang ditemukan memiliki kesesuaian selain penggunaan cells([rowindex] ,[columnindex] ), juga bisa digunakan offset dan resize contoh : msgbox rng.offset(ldata- 1).resize( rowsize:= 1) yang hasilnya sama dengan : msgbox rng.cells(ldata) Semoga bermanfaat. Wa Alaikumsalam Wr. Wb. Kid. 2010/2/15 Arista Syahdana <syahd...@rocketmail .com> > > > > > > > > > > > > > > > > >> > >> > >Maaf klo dalam menerangkan kasus saya kurang jelas. berikut penjelasan yang >lebih kompleks : >1. saya membuat file excel dengan lebih dari 10 sheet. masing2 sheet berisi >data penjualan barang yang berbeda jenis sehingga saya harus membuat form >pembelian dan penjualan untuk setiap barang. Nah saya ingin mebuat form yang >lebih ringkas. Misalnay saya mengetikkan kata : fre di textbox dan menekan >enter maka secara otomatis di combobox akan muncul: >> > fren 5 > fren10 > fren 25 > fren 50 > fren 100 >dan ketika saya memilih salah satu dari hasil maka form tersebut akan merujuk >pada tabel barang yang saya klik > >2. saya mempunyai 1 form utama yang fungsinya untuk merujuk pada sheet >tertentu. dan pead sheet tersebut ada form lain > yang berfungsi untuk memasukkan data ke dalam sheet tersebut. Yang saya > tanyakan apabila saya mengubah tanggal pada form utama maka semua form yang > ada pada setiap sheet otomatis ikut berubah sesuai dengan form utama ketika > di aktifkan. >> >Berikut saya lampirkan file contoh. mohon diperiksa pada tanggal setiap form, >dan cara mencari nama anggota pada sheet ANGGOTA > >Demikian penjelasan kasus yang saya alami. dan sebelumnya saya ucapkan terima >kasih. > > > > > ________________________________ >Dari: Mr. Kid <mr.nm...@gmail. com> >Kepada: belajar-excel@ yahoogroups. com >Terkirim: Sab, 13 Februari, 2010 20:46:47 >Judul: Re: [belajar-excel] form Pencarian > > > > > >> > >Dear Syahdana, > >1. >Object ComboBox memiliki kemampuan untuk autocomplete, sedangkan textbox tidak >memilikinya secara default. >Jika makna kata sebagian adalah dimana saja dalam nilai (awal, tengah, akhir), >maka perlu kode program untuk mencari posisi yang dicari dalam sebuah list.. >> > > >Jika list tersebut dari suatu range di excel sheet, maka selain dengan loop, >bisa digunakan dengan evaluate berisi formula array Match() dengan array >CountIF() -- kebanyakan suka dengan loop memakai fungsi InStr bawaan VB. > >Contoh kasus mungkin bisa dilampirkan, agar rekan yang bersedia memberi contoh >kode programnya tidak sebel harus buat dummy datanya -- hehehe jadi penyediaan >dummy data adalah sebagian fasilitas yang harus disediakan (istilah agak >kasarnya -- modal dikit gitu). > >2. >Yang ini lebih butuh lagi contoh kasusnya, karena sangat customize. Seperti >apakah wujud form-form tersebut. Kenapa ada banyak form ? Mungkinkah >menggunakaan MultiPage, TabStrip, atau gabungan MultiPage dan TabStrip ? Kalau >memang tidak bisa, berarti ada banyak form beneran. > > >Kid. > > >2010/2/13 syahd...@rocketmail .com <syahd...@rocketmail .com> > >> >>> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>>> >> >>>> >> >>1. Maaf mbak Ni numpang tanya. Gimana ya caranya membuat form untuk mencari >>data anggota atau barang dengan textbox? Dan jika Kita memasukkan sebagian >>maka akan tampak pilihan di combobox atau text box yang lain. >>>> >> >> >> >>2. Trus bagaimana caranya agar combobox dapat menampilkan tanggal di lebih >>dari 1 form dan jika mengubah salah satunya maka semua combobox di form lain >>ikut berubah? >> >> > >________________________________ Mencari semua teman di Yahoo! Messenger? >Undang teman dari Hotmail, Gmail ke Yahoo! Messenger dengan mudah sekarang! >> Buat sendiri desain eksklusif Messenger Pingbox Anda sekarang! Membuat tempat chat pribadi di blog Anda sekarang sangatlah mudah. http://id.messenger.yahoo.com/pingbox/