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]
[belajar-excel] <[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.
>
>
>
re-Simulasi Deposito Bank Mandiri.xlsm
Description: application/vnd.ms-excel.sheet.macroenabled.12

