Hi Mr. Kid Assalamu alaikum, Mr. Kid
mohon pencerahannya perihal protectsheet dalam file ini Wa alaikum salam Terima kasih atas perhatian dan kerjasamanya, dan saya mohon maaf apabila ada kata-kata yang kurang berkenan Terima Kasih Matzen From: [email protected] [mailto:[email protected]] Sent: 10 Agustus 2015 2:46 To: BeExcel Subject: Re: [belajar-excel] Mencegah data ganda [1 Attachment] Hai Danny, 1. Bagaimana caranya mencegah data ganda dalam userform dengan jumlah 35 textbox? Contoh : - jika semua data sama (semua textbox) , maka ada pesan = data masih sama. - jika ada satu atau dua (textbox) yang berubah, maka ada pesan = textbox 1 dan 21 selesai diubah. >> Jadi, apa maksud Anda dengan 'data ganda' ? >> Contoh yang Anda berikan adalah tentang penyusunan pesan tentang >> textbox-textbox yang mengalami pengubahan nilai. >> Pesan bisa disusun dalam proses simpan, yaitu sebelum penulisan nilai >> textbox ke suatu cell. >> Kira-kira susunannya begini : dim sMsg as string if cdbl(textbox1.text)<>sheets("bunga").range("i5").value then smsg=smsg & ", Textbox1" endif if cdbl(textbox2.text)<>sheets("bunga").range("i6").value then smsg=smsg & ", Textbox2" endif dst sampai textbox35, kemudian diikuti dengan proses penulisan nilai setiap textbox ke range terkait, seperti : sheets("bunga").range("i5").value=textbox1.text dst lalu ditutup dengan penampilan pesan : if lenb(smsg)<>0 then msgbox "Textbox yang berubah adalah :" & vbcrlf & mid(smsg,3),vbinformation,"judul pesan" else msgbox "Semua data masih sama.",vbinformation,"judul pesan" endif >> Berhubung ada 35 textbox, maka bisa jadi baris kodenya akan ada banyak >> sekali. >> Selain itu, menampilkan pesan dengan MsgBox terbatasi sebanyak 1024 >> karakter. Jadi, jika pesannya lebih dari 1024 karakter, sebaiknya dibuat >> sebuah userform berisi sebuah textbox pesan atau label pesan untuk >> menampilkan bunyi pesannya. -------------------------- 2. Dalam kode textbox, saya mengisi agar tidak bisa diisi selain angka. Tetapi dalam kondisi lain, saya ingin mengisi angka dengan menggunakan koma atau titik (contoh = 7,5 atau 7.5). Kode apa yang bisa digunakan untuk melakukan hal itu? >> Textbox memiliki event bernama KeyPress atau KeyDown yang bisa digunakan >> untuk hal ini. >> Event KeyPress akan menggunakan kode ASCII karakter yang di-input user. >> Event KeyDown akan menggunakan kode keyboard yang ditekan oleh user. >> VB/VBA menggunakan karakter titik sebagai tanda desimal pada regional >> setting apapun. >> kode ASCII karakter titik adalah 46, kode keyboard karakter titik adalah 190 >> pada shift bernilai 0 >> kode ASCII angka 0 sampai 9 adalah 48 sampai 57, dengan kode keyboard angka >> 0 sampai angka 9 adalah sama, yaitu 48 sampai 57. >> Jika menggunakan event keypress : select case keyascii case 48 to 57, 46 'angka 0 sampai angka 9, karakter titik 'do nothing case else keyascii=0 end select >> Jika menggunakan event keydown : shift=0 select case keycode case 48 to 57, 190 'keyboard untuk angka 0 sampai angka 9, keyboard untuk karakter titik (ingat, pada shift tidak tertekan alias 0) 'do nothing case else keycode=0 end select ------------------------ Pada kasus ini, penggunaan textbox yang banyak bisa digantikan dengan control datagrid, tetapi tampaknya kurang luwes bagi pengguna Excel. Jadi, penggunaan textbox yang banyak masih bisa dimaklumi jika memang dituntut harus bisa menampilkan seluruh nilai secara individual agar memudahkan dalam proses input karena bisa membandingkan nilai di bagian lain. Penggunan banyak control yang memiliki fungsional yang sama (misal pada kasus ini sebagai media input nilai bunga, meski dari berbagai kriteria), bisa disederhanakan dengan penyusunan class module berisi prosedur event dari si control (misal textbox pada kasus ini). Dengan demikian, 1 (satu) prosedur event tertentu bisa digunakan bersama oleh seluruh controls yang secara fungsional adalah sama tersebut. Bahkan, dengan cara tersebut akan bisa dikembangkan lebih jauh. File terlampir adalah contoh dari banyak textbox yang cukup menggunakan 1 (satu) prosedur event tertentu. Seperti event keypress dari 35 textbox yang ada cukup dengan 1 (satu) prosedur event keypress di class module. Begitu juga untuk event change dari 35 textbox yang ada cukup dengan 1 (satu) prosedur event change di class module. Wassalam, Kid 2015-08-06 19:07 GMT+07:00 Danny Prasetyo [email protected]<mailto:[email protected]> [belajar-excel] <[email protected]<mailto:[email protected]>>: Selamat malam para master. Saya ada 2 kendala. 1. Bagaimana caranya mencegah data ganda dalam userform dengan jumlah 35 textbox? Contoh : - jika semua data sama (semua textbox) , maka ada pesan = data masih sama. - jika ada satu atau dua (textbox) yang berubah, maka ada pesan = textbox 1 dan 21 selesai diubah. 2. Dalam kode textbox, saya mengisi agar tidak bisa diisi selain angka. Tetapi dalam kondisi lain, saya ingin mengisi angka dengan menggunakan koma atau titik (contoh = 7,5 atau 7.5). Kode apa yang bisa digunakan untuk melakukan hal itu? Terima kasih jika bersedia membantu. ____________________________________________________________________________ This email has been scanned for Viruses and Spam. For more information please contact your local Business Unit Information Security representative. ____________________________________________________________________________

