Ok...
Tentang :
1. 'Tombol Edit
> katanya user ndak boleh edit, kok diberi tombol edit ?
> kalau range nya ada yang berformula dan user mengedit formulanya,
malah bisa salah edit...
> btw, prosedur berikut :
Private Sub CommandButton2_Click()
'Tombol Edit
Dim myCode As Variant
myCode = InputBox("Please Insert your Password to Edit this
Worksheet..", "Your Password")
If myCode = "123" Then
MsgBox "Good...your Password is Match", vbInformation, "Your
Password"
Sheet1.Unprotect ("123")
Else
MsgBox "Sorry...Your Password is not Match !!!" & vbCrLf & _
"You Can not Edit this Worksheet", vbCritical, " Your
Password"
End If
End Sub
Catatan :
a. penggunaan tipe data variant pada baris :
Dim myCode As Variant
termasuk berlebihan, karena hanya digunakan untuk menampung data yang pasti
text hasil inputbox nya VB
sebaiknya set tipe datanya menjadi string saja. Maka baris ini diganti
menjadi :
dim mycode as string
b. inputbox yang digunakan adalah inputbox milik VB yang berisi tombol OK,
Cancel, dan close dialog (x).
<baris mulai IF blabla sampai Endif
Dari script di atas, ketika user menekan cancel atau close dialog, maka
yang diproses adalah bagian Else dari blok IF yang berisi script penampilan
pesan ke user dengan MsgBox.
Akan lebih baik bila user menekan Cancel tidak mengeluarkan pesan apa-apa.
Hal ini bisa mengurangi rasa terganggunya user dengan pesan yang muncul.
Inputbox nya VB punya 3 output, yaitu :
1. empty -> ketika user mengklik cancel atau close dialog :: dicek dengan
isi pointer si variabel. Ingat, di VBA nilai pointer adalah addressnya yang
bertipe long
2. nullstring -> ketika user tidak mengisi apa-apa dalam area input text
lalu menekan OK
3. teks yang di input dalam area input text -> ketika user mengisi suatu
teks dalam area input text lalu menekan OK
Jadi, susunan blok if-nya menjadi : (dengan tipe data myCode adalah string
ya)
if strptr(mycode)=0 then 'kalo user klik cancel atau close dialog
'do nothing
Elseif lenb(mycode)=0 then 'user tidak mengisi apa-apa lalu menekan
OK
'do nothing
elseIf myCode = "123" Then 'user mengisi teks berbunyi 123 lalu
menekan OK
MsgBox "Good...your Password is Match", vbInformation, "Your
Password"
Sheet1.Unprotect ("123") '-> proses unprotect, berarti akan ada
proses protect *yang harus* menggunakan proteksiawal
else 'user mengisi suatu teks yang bukan berbunyi 123 lalu menekan OK
MsgBox "Sorry...Your Password is not Match !!!" & vbCrLf & _
"You Can not Edit this Worksheet", vbCritical, " Your
Password"
End If
Kasus :
Ijin edit hanya 1 kali, berarti setelah tombol ini ditekan dan isian di
inputbox adalah benar berbunyi teks 123, maka tombol edit tidak boleh
digunakan alias di-disable.
Langkah solusi :
a. tepat setelah baris unprotect, lakukan proses pen-disable-an tombol.
Tombolnya bernama CommandButton2. Baris kodenya :
CommandButton2.enabled=false 'harus dipikirkan dimana
meng-enable kembali (set TRUE) si tombol
b. karena tombol harus ter-enable kembali suatu saat tertentu, maka
nanti diprosedur yang menuntut ter-enable-nya si tombol diberi baris kode
berbunyi :
CommandButton2.enabled=true
*** misal di event workbook open atau ketika user mengubah suatu
nilai tertentu
2. 'Tombol Lock
> kalau ndak salah duga, tombol ini dimaksudkan untuk mem-protect
kembali setelah user melakukan edit
> prosedur berikut :
Private Sub CommandButton3_Click()
'Tombol Lock
Sheet1.Protect ("123")
End Sub
Catatan :
karena sudah ada prosedur yang bertugas memproteksi, maka baris kode
protect yang ada dibuang dan diganti dengan memanggil prosedur yang
bertugas memproteksi. Bahasan di email sebelumnya, prosedur yang bertugas
memproteksi bernama ProteksiAwal. Jadi, prosedur ini diubah menjadi :
Private Sub CommandButton3_Click()
'Tombol Lock
'Sheet1.Protect ("123") '-> buang saja
ProteksiAwal 'ndak perlu pakai Call seperti Call ProteksiAwal,
karena jenis prosedurnya adalah Sub (void kalau di C dan genrenya)
End Sub
3. ' Tombol Copy
> prosedur ini tidak terlalu banyak membawa masalah walaupun setting
proteksinya adalah noselection sekalipun, karena prosedur proteksi awal
sudah menetapkan nilai parameter userinterfaceonly adalah True.
> prosedur berikut :
Private Sub CommandButton4_Click()
' Tombol Copy
Range("B1:E358").Copy
End Sub
Catatan :
a. kalau yang akan di-copy adalah baris-baris yang tampak saja, ubah agar
yang dirujuk adalah visible cells only (sudah kenal perintah Goto (CTRL G)
-> klik Special -> Visible Only bukan)
Range("b1:e358").specialcells(xlvisibleonly).copy
b. hati-hati kalau ada range yang berisi formula dan absolute reference
(tanda $ dalam rujukan range di formula) nya tidak ditata dengan baik,
karena begitu di-paste di tempat lain di instansi Excel yang sama,
formulanya bisa berubah dan hasil paste jadi salah kalkulasi.
Contoh :
- area yang di-copy mulai b1 sampai e358.
- di range b1 ada formula berbunyi =sheetblabla!gj17
- user mempaste ke sheet lain bernama sheetblibliblibli pada range c2
- maka formula di b1 akan berubah menjadi =sheetblabla!gk18
*** simpulan ***
Jadi, proses otomasi bukan sekedar memilih yang mudah untuk dilakukan,
tetapi sebaiknya diawali agar proses yang dilakukan user bisa menghasilkan
data yang tetap baik dan benar meskipun user tidak menyadari bahwa proses
yang dilakukannya bisa mengakibatkan kesalahan pada data yang dihasilkan.
Wassalam,
Kid
2015-05-24 21:31 GMT+10:00 nurani alkena [email protected]
[belajar-excel] <[email protected]>:
>
>
> Private Sub CommandButton2_Click()
> 'Tombol Edit
> Dim myCode As Variant
> myCode = InputBox("Please Insert your Password to Edit this Worksheet..",
> "Your Password")
> If myCode = "123" Then
> MsgBox "Good...your Password is Match", vbInformation, "Your Password"
> Sheet1.Unprotect ("123")
> Else
> MsgBox "Sorry...Your Password is not Match !!!" & vbCrLf & _
> "You Can not Edit this Worksheet", vbCritical, " Your Password"
> End If
>
> End Sub
>
> Private Sub CommandButton3_Click()
> 'Tombol Lock
> Sheet1.Protect ("123")
> End Sub
>
> Private Sub CommandButton4_Click()
> ' Tombol Copy
> Range("B1:E358").Copy
> End Sub
>
>
> untuk ke3 tombol diatas
>
>
>
>
> On Sunday, May 24, 2015 5:18 PM, "'Mr. Kid' [email protected]
> [belajar-excel]" <[email protected]> wrote:
>
>
>
> Kalau bisa, dicopas kesini prosedur workbook open, event click si tombol
> enter, dan event click si tombol yang hanya sekali pakai tersebut.
>
> Bolehkan copas script prosedur tersebut diatas kesini ?
>
>
>
>
>
>
> 2015-05-24 20:11 GMT+10:00 nurani alkena [email protected]
> [belajar-excel] <[email protected]>:
>
>
> mr... sorry program nya sudah bisa.
> ketika perintah unprotectsheet pada command button enter saya hilangkan.
> dia tetap terproteksi.
>
>
> thanks
>
> tp yang command button hanya bisa diklik satu kali ketika ingin diklik
> kembali dia tidak akan bisa mengulangi perintah tersebut. dan perubahan
> yang menunjukan bahwa kita sudah memilih commandbutton itu *blm bisa
> dilakukan *.
> mohon bantuannya.
>
> you are the best teacher.
>
>
>
>
>
> On Sunday, May 24, 2015 5:04 PM, "nurani alkena [email protected]
> [belajar-excel]" <[email protected]> wrote:
>
>
>
> mr......sudah saya coba seperti apa yang dikatakan menaruh perintah
> proteksi awal di workbook open.
> maaf .... mungkin penjelasan saya kurang lengkap.
> ketika saya menekan tombol enter untuk memilih list yang lain, worksheet
> tsb tidak terproteksi kembali. harus menekan tombol lock untuk memproteksi
> ws tsb. saya menginginkan ws tsb tetap terproteksi walau saya menekan
> tombol enter, copy atau maximize dn minize.
>
> maaf merepotkan :-(
> terima kasih
>
> ini lampirannya
>
>
>
> On Sunday, May 24, 2015 4:09 PM, "'Mr. Kid' [email protected]
> [belajar-excel]" <[email protected]> wrote:
>
>
>
> oh jadi kasusnya tetap tentang penggunaan outlining dalam keadaan sheet
> terproteksi ya...
>
> Sepertinya ada yang tidak pas peletakannya...
>
> coba begini : (pastikan semuanya dicek ulang ya)
> 1. unprotect seluruh sheet
> 2. pastikan sudah punya prosedur seperti ProteksiAwal tadi ya
>
> 3. lihat di event workbook open (Ingat, workbook open bukan selain open),
> pastikan ada perintah memanggil prosedur ProteksiAwal disana.
> > Kenapa ? Supaya prosedur proteksiawal dijalankan saat workbook
> pertama kali dibuka oleh user
> 4. pastikan tidak ada pemanggilang prosedur proteksiawal di event milik
> workbook lainnya, seperti di event activate, beforeclose, beforeclose, dsb.
> > jika ada, buang baris pemanggilan proteksiawal tersebut
>
> 5. cek disemua prosedur yang ada (dimanapun ada prosedur, lakukanlah cek
> ulang) kecuali pada prosedur ProteksiAwal tentang baris-baris yang
> melakukan protect sheet
> > semua baris ini dibuang saja (dimanapun dia berada)
> > biasanya bentuknya begini :
> sheets("nama sheetnya").protect 'tapi tidak ada
> userinterfaceonly
> 6. semua baris proteksi yang dibuang di nomor 5 tadi, diganti dengan baris
> untuk memanggil prosedur bernama ProteksiAwal
>
> Sampai disini, mestinya tidak diperlukan lagi tombol lock yang Anda sebut,
> alias tombol tersebut bisa Anda buang.
>
> Saya ingin sheet tetap terproteksi dan maximize n minimize tetap bisa
> dilakukan *tanpa menekan tombol lock*.
>
>
> Proses copy dengan VBA (kalau ndak salah ingat, diawal-awal kasus ini ada
> proses Copy yang telah Anda buat) tetap akan bekerja dengan baik walau
> worksheet diproteksi, karena proses proteksi dilakukan oleh prosedur
> ProteksiAwal yang menambahkan parameter userinterfaceonly bernilai TRUE.
>
> Tetapi, user tidak bisa melakukan copy dan apapun yang tidak sesuai dengan
> settingan proteksi Anda melalui ribbon Review -> group Changes -> Protect
> Sheet.
>
> *Cara mengatur apa saja yang bisa diakses oleh user adalah dengan
> melakukan proteksi manual melalui ribbon Review -> group Changes -> protect
> sheet*
>
> *Anda bisa mencentang apa yang menurut Anda boleh dilakukan oleh user.
> Masukkan password dan ikuti langkahnya, lalu tekan OK sampai kembali ke
> worksheet.*
> Berhubung pada kasus ini nantinya proses proteksi worksheet diserahkan
> kepada prosedur ProteksiAwal, maka Anda harus segera meng-unprotect kembali
> usai mengubah setting opsi proteksi tadi (yang di bold di atas)
> Save workbook.
>
>
>
> Wassalam,
> Kid.
>
>
>
>
>
> 2015-05-24 18:37 GMT+10:00 nurani alkena [email protected]
> [belajar-excel] <[email protected]>:
>
>
> Maaf pak... maksd saya minimize dan maximize row. yg group n ungroup
> itu. Seperti gambar yg saya kirim sebelumnya.
> Saya ingin maximize n minimize row tetap bisa dilakukan walau sheet
> terproteksi. Saya sudah mencoba menggunakan proteksiawal. Cmn pas awal saja
> bisa maximize n minimize dengan status sheet terproteksi. Ketika kedua kali
> dn seterusnya saya coba maximize n minimize, sheetnya tdk terproteksi lg.
> harus menekan tombol lock dl.
> Saya ingin sheet tetap terproteksi dan maximize n minimize tetap bisa
> dilakukan tanpa menekan tombol lock.
> Sent from Yahoo Mail on Android
> <https://overview.mail.yahoo.com/mobile/?.src=Android>
> ------------------------------
> *From*:"'Mr. Kid' [email protected] [belajar-excel]" <
> [email protected]>
> *Date*:Sun, May 24, 2015 at 15:10
>
> *Subject*:Re: [belajar-excel] Re: Copy Paste Active dan Deactive Worksheet
>
>
> Sebentar, coba diluruskan dulu...
>
> 1. hide unhide row yang dimaksud adalah blok seluruh row lalu klik kanan
> pilih hide atau unhide ?
> 2. atau maksud hide unhide disini adalah shrink dan expand dengan
> outlining yang Anda tanyakan sejak awal ?
>
> Sejak awal, Anda menanyakan tentang worksheet tetap ter-protect tapi tetap
> bisa menggunakan outlining untuk kegiatan shrink outline dan expand outline.
>
> Kasusnya sudah berubah menjadi hide unhide row dengan context menu hide
> atau masih tetap sama dengan shrink dan expand pada outlining ?
>
>
>
>
>
>
>
> 2015-05-24 17:12 GMT+10:00 nurani alkena [email protected]
> [belajar-excel] <[email protected]>:
>
>
> Mr. Ternyata hide n unhide roq nya cmn bsa dilakukan satu kali. Saya
> ingin hude n unhidenya bsa dilakukan ketika di protectsheet. Jd ketika row
> tsb di unhide gak berubah status worksheetnya dr protect sheet menjadi
> unprotect. Jd protect sheet nya tetap walau kita unhide row.
>
> Thanks.
>
>
> Sent from Yahoo Mail on Android
> <https://overview.mail.yahoo.com/mobile/?.src=Android>
> ------------------------------
> *From*:"'Mr. Kid' [email protected] [belajar-excel]" <
> [email protected]>
> *Date*:Sun, May 24, 2015 at 13:08
> *Subject*:Re: [belajar-excel] Re: Copy Paste Active dan Deactive Worksheet
>
>
> Batasnya 1 kali kan ya...
> Asumsi : menggunakan activex control bernama command button
> Dalam event click si tombol, beri proses pen-disable-an si tombol
> (property enabled=false).
>
> Wassalam,
> Kid
>
>
>
>
>
>
>
> 2015-05-24 15:27 GMT+10:00 [email protected] [belajar-excel] <
> [email protected]>:
>
>
> It's Work...
> Thanks MR.
> YOU ARE THE BEST ONE
> MR...
> i wanna ask again
> about command button
>
> saya ingin command button edit hanya satu kali dilakukan proses click.
> ketika diclick yang kedua. maka command button"edit" tidak bisa melakukan
> proses edit kembali. bagaimana pengkodean nya. begitupun untuk command
> button lock dan copy. thanks. dan ada perubahan ketika kita menekan command
> tersebut,tandanya berupa perubahan warna atau shapes pada command button
> tsb
> terima kasih
>
>
>
>
>
>
>
>
>
>
>
>
>