Belajar sedikit-sedikit secara rutin dan konsisten akan berdampak lebih besar daripada belajar banyak sesekali.
Worksheet bisa diberi Form Controls dan ActiveX Controls untuk memudahkan interaksi dengan user. Object berupa shape juga bisa dimanfaatkan sebagai sebuah tombol untuk menjalankan prosedur VBA yang telah dibuat dalam sebuah general module. Bahasan kali ini adalah tentang menggunakan sebuah shape, Button Form Control, dan Command Button ActiveX Control untuk menjalankan sebuah prosedur VBA. File yang bisa digunakan untuk mencoba secara mandiri adalah BelajarVBA101_01.xlsm. Sebaiknya dalam membaca pembahasan ini disertai dengan membuka file BelajarVBA101_01.xlsm pada sheet bernama 'shapes_n_controls'.
Mengenal object control
Object controls adalah object yang dapat digunakan untuk mengatur interaksi dengan user sesuai jenis control tersebut. Misalnya, sebuah List Box dapat digunakan untuk mengatur daftar item yang dapat dipilih oleh user. Ketika sebuah item dalam List Box dipilih user, maka dapat digunakan untuk mengatur proses yang harus terjadi terhadap pemilihan item tersebut.Object control berada di ribbon Developer -> group Controls -> item Insert
Object control yang tersedia terbagi dalam 2 kelompok besar, yaitu :
- Form Controls
- Object controls bawaan Excel.
- Tidak termasuk object controls yang diwaspadai oleh Security Excel.
- Hanya memiliki prosedur sub event click saja.
- Controls yang disediakan adalah Button, Label, Combo Box, List Box, Spin Button, Scroll Bar, Check Box, Option Button, Group Box.
- Controls tambahan ketika menggunakan MS Excel 5.0 Dialog adalah Text Field, Combo List, dan Combo Drop Down.
- Beberapa controls seperti Combobox, Listbox, Spin Button, dan sebagainya memiliki banyak properti yang bisa diset langsung melalui Format Control pada tab Control.
- Beberapa controls, seperti Spin Button, Combobox, dan semacamnya, memberikan suatu nilai output. Nilai output tersebut dapat digunakan ketika control tersebut di-link ke suatu cell.
- Form control berupa List Box dan Combo Box membutuhkan rujukan ke suatu range satu kolom saja untuk mengisi daftar pilihan yang dapat dipilih user.
- ActiveX Controls
- Object controls tambahan dari library windows bernama mscomctl.ocx atau mscomctl2.ocx.
- Memiliki banyak properti melalui dialog window Properties.
- Memiliki banyak macam prosedur sub event.
- Bisa digunakan dalam sebuah sheet maupun dalam sebuah UserForm.
- Controls yang disediakan adalah Command Button, Label, Combo Box, List Box, Spin Button, Scroll Bar, Check Box, Option Button, Text Box, Image, Toggle Button.
- Beberapa controls memberikan suatu nilai output. Nilai output tersebut bisa digunakan melalui baris-baris kode VBA maupun di-link ke sebuah cell.
- Pengisian daftar pada control seperti Combo Box ataupun List Box bisa dengan merujuk ke suatu range tertentu ataupun melalui baris-baris kode VBA. Jumlah kolom dalam Combo Box atau List Box juga bisa lebih dari satu kolom.
- Bisa menambahkan ActiveX Controls lain yang belum ada dalam daftar yang disediakan melalui :
ribbon Developer -> group Controls -> Insert -> bagian ActiveX Controls -> item More Controls
- Pengaturan nilai-nilai properti maupun penataan baris-baris kode dalam events dilakukan ketika dalam keadaan Design Mode ON, yaitu dengan cara :
ribbon Developer -> group Controls -> klik Design Mode agar aktif (terjadi perubahan warna pada menu)
- Controls akan dapat berfungsi ketika Design Mode dalam keadaan OFF, yaitu dengan mengklik ulang item Design Mode dalam ribbon Developer.
Mengenal properti khusus pada sebuah form control
Properti khusus yang dimiliki sebuah form control diletakkan pada tab Control dalam dialog window Format Control. Properti khusus tersebut dapat diakses dengan :klik kanan form control -> Format Control -> klik tab Control
Form Control yang memiliki properti khusus pada umumnya adalah controls yang bisa memberikan nilai output, kecuali control bernama Group Box yang berfungsi membentuk sebuah group check box maupun option button. Berikut ini adalah form controls yang bisa memberi nilai output :
- Combo Box (Drop Down)
berupa nomor indeks item (item pertama bernomor indeks 1) yang dipilih user - List Box
berupa nomor indeks item (item pertama bernomor indeks 1) yang dipilih user - Spin Button
berupa nilai bilangan bulat setelah kegiatan naik atau turun terakhir - Scroll Bar
berupa nilai bilangan bulat setelah kegiatan naik atau turun terakhir - Check Box
berupa nilai TRUE ketika dalam status checked dan nilai FALSE ketika dalam status unchecked - Option Button
berupa nomor indeks dari option button (item pertama bernomor indeks 1) dalam sebuah grup option
Mengenal properti ActiveX Control
Setiap ActiveX Control memiliki banyak properti yang bisa diatur nilainya melalui baris kode VBA maupun melalui dialog window properties. Cara menampilkan dialog window properties dari sebuah ActiveX Control yang diletakkan pada sebuah sheet adalah dengan :- Aktifkan Design Mode
- Membuka dialog window properties
klik kanan control -> pilih Properties
Beberapa properti, yang ada disetiap ActiveX Control, yang sering digunakan adalah :
- Enabled
- diisi TRUE jika boleh digunakan oleh user, dan diisi FALSE jika tidak boleh digunakan
- Visible
- diisi TRUE jika akan ditampilkan kepada user, dan diisi FALSE jika akan disembunyikan dari pandangan user
Mengenal event dari ActiveX Controls
Kelebihan dari ActiveX Controls adalah tersedianya banyak event yang menangkap perlakuan user terhadap control tersebut. Seperti event bernama Click yang akan menangkap perlakuan user saat mengklik control tersebut. Ada juga event bernama Change yang menangkap perlakuan user ketika mengubah nilai yang ada dalam control tersebut, seperti mengetik setiap karakter dalam Text Box Control atau mengubah pilihan dalam List Box maupun Combo Box dan sebagainya.Dengan diketahuinya perlakuan user terhadap si control melalui event yang diproses tersebut, maka alur proses bisa diatur untuk melakukan suatu kegiatan komputasi tertentu. Misalnya, ketika user mengklik tombol tertentu, maka event Click akan diproses dan didalam event tersebut diberi baris-baris kode untuk menjalankan suatu proses copy data dari sheet input ke sheet database.
Dari sekian banyak event yang dimiliki setiap ActiveX Control, ada beberapa event yang selalu ada dan sering digunakan, antara lain adalah :
- GotFocus
- Bereaksi ketika suatu proses atau user mengaktifkan control tersebut. Event ini bisa digunakan salah satu contohnya adalah untuk menata (bahkan sampai memvalidasi nilai) dari control tersebut atau controls yang lain.
- Misalnya control TextBox bernama Negara. Ketika TextBox Negara diaktifkan, maka event GotFocus dari textbox ini akan beraksi dan dijalankan. Pada event GotFocus milik si textbox ini bisa diisi dengan proses menghapus nilai dalam textbox dan memeriksa nilai dalam textbox lain seperti textbox Nama harus sudah terisi lebih dulu. Jika textbox Nama belum terisi, maka proses akan memerintahkan textbox Nama untuk diaktifkan.
- LostFocus
- Bereaksi ketika suatu proses atau user mengaktifkan object lain. Event ini bisa digunakan salah satu contohnya adalah untuk memvalidasi nilai yang telah diinputkan pada control tersebut.
- Misalnya control ComboBox bernama PIC yang sedang aktif. Ketika user mengaktifkan control lain, maka event LostFocus milik combobox PIC akan beraksi dan dijalankan. Pada event ini bisa diisi dengan pemeriksaan bahwa combobox PIC telah diisi dengan salah satu item yang ada dalam daftar yang disediakan. Jika tidak ada, maka proses bisa mengembalikan control yang aktif ke combobox PIC.
- KeyDown
- Bereaksi ketika si control sedang aktif dan user menekan sebuah tombol keyboard. Event ini menyediakan informasi kode tombol keyboard yang ditekan oleh user dalam variabel bernama KeyCode. Informasi tentang tertekannya tombol shift atau tidak disediakan dalam variabel bernama Shift. Event ini bisa digunakan untuk membatasi tombol keyboard yang bisa mempengaruhi si control.
- Misalnya sebuah textbox bernama NIP yang harus berisi angka saja bisa diatur agar tombol keyboard yang membuat si textbox berubah nilainya adalah tombol-tombol angka saja. Contoh lainnya adalah sebuah CommandButton bisa diatur agar proses penekanan (klik) bisa dengan menekan tombol keyboard huruf 'p' ketika si control dalam keadaan sedang aktif.
- MouseMove
- Bereaksi ketika pointer mouse melintasi si control. Event ini biasanya digunakan untuk menampilkan informasi tentang si control. Salah satu media penulisan informasi yang disediakan adalah properti bernama ControlTipText. Properti ini hanya ada ketika control digunakan dalam sebuah userform. Ketika control diletakkan dalam sebuah sheet, maka control seperti Label bisa dijadikan media penampil informasi tentang si control.
Tombol pemanggil prosedur VBA
Beberapa kegiatan otomasi dengan VBA membutuhkan interaksi dengan user untuk menjalankan prosedur-prosedur otomasi yang telah dibuat. Sebuah tombol yang dapat ditekan oleh user akan memudahkan user dalam menjalankan suatu prosedur otomasi. Tombol bisa berupa Shape, Form Control, atau ActiveX Control.Cara menambahkan suatu object yang akan berfungsi sebagai tombol dalam sebuah worksheet adalah sebagai berikut :
- Menggunakan shape
ribbon Insert -> group Illustrations -> Shapes -> pilih sebuah shape -> gambar kotak dalam worksheet
- Menggunakan Form Control
ribbon Developer -> group Controls -> Insert -> lihat bagian Form Controls (sisi atas) -> pilih Button -> gambar kotak dalam worksheet
- Menggunakan ActiveX Control
ribbon Developer -> group Controls -> Insert -> lihat bagian Form Controls (sisi atas) -> pilih Button -> gambar kotak dalam worksheet
Cara mengganti nama tombol antara lain dengan :
- Menggunakan shape
klik kanan shape dalam worksheet -> klik Name Box (pojok kiri atas worksheet [diatas nomor baris Excel 1]) -> ganti teks yang ada (misal menjadi shpPesan) -> tekan ENTER
- Menggunakan Form Control
klik kanan Button dalam worksheet -> klik Name Box (pojok kiri atas worksheet [diatas nomor baris Excel 1]) -> ganti teks yang ada (misal menjadi ctlBPesan) -> tekan ENTER
- Menggunakan ActiveX Control
- Aktifkan Design Mode
- Ganti nama control
klik kanan Command Button dalam worksheet -> klik Name Box (pojok kiri atas worksheet [diatas nomor baris Excel 1]) -> ganti teks yang ada (misal menjadi cmdPesan) -> tekan ENTER
- Non aktifkan Design Mode
Pengaturan nama prosedur yang akan dijalankan oleh si tombol selalu diawali dengan adanya prosedur yang akan dijalankan. Misalkan pada sebuah general module telah dibuat sebuah prosedur bernama PesanShapeNFormControl yang berupa :
Public Sub PesanShapeNFormControl()
MsgBox "Hello " & Environ("USERNAME")
End Sub
Kemudian diinginkan untuk dijalankan dengan object berupa sebuah shape atau sebuah form control Button.
Cara mengatur tombol berupa shape atau form control Button yang telah ada dalam worksheet, sehingga bisa menjalankan prosedur diatas ketika ditekan, adalah sebagai berikut :
- Menggunakan shape
- klik kanan shape dalam worksheet -> pilih Assign Macro
- pilih nama prosedur PesanShapeNFormControl -> OK
- klik kanan shape dalam worksheet -> pilih Assign Macro
- Menggunakan Form Control
- seperti menggunakan shape, tetapi yang diklik kanan adalah Button
- klik kanan Button dalam worksheet -> pilih Assign Macro
- pilih nama prosedur PesanShapeNFormControl -> OK
Prosedur PesanActiveXControl berupa blok prosedur sebagai berikut :
Public Sub PesanActiveXControl()
MsgBox "Welcome, " & Environ("USERNAME")
End Sub
Cara mengatur Command Button tersebut adalah sebagai berikut :
- Aktifkan Design Mode
- Bentuk prosedur event click (ketika tombol di-click maka akan diproses)
double click Command Button dalam worksheet -> muncul blok event Click milik tombol tersebut (gambar bawah sisi kiri) -> isi dengan nama prosedur PesanActiveXControl
- Non aktifkan Design Mode
Catatan
- Form Controls adalah bawaan Excel, sehingga cenderung dapat digunakan disemua komputer yang memiliki Excel dan tidak memerlukan pengaturan Excel Security.
- ActiveX Controls tergantung pada file library, sehingga controls tersebut dapat berfungsi dengan baik jika komputer setempat (yang membuka workbook) juga memiliki file library yang berisi si control.
- ActiveX Controls termasuk object yang diawasi oleh Excel Security, sehingga membutuhkan pengaturan Excel Security agar dapat berfungsi.
- ActiveX Controls mudah ditata dengan baris-baris VBA dan memiliki banyak events.
:)
Insya Allah pembahasan berikutnya adalah tentang beberapa Form Control dan ActiveX Control yang sering digunakan seperti ComboBox, ListBox, dan sebagainya. Pembahasan masih tentang penggunaan controls dalam worksheet.
Makasih banyak atas Ilmunya.....
BalasHapusbagimana caranya scroll dengan cell yang isinya adalah jam ?
BalasHapusMenarik pembahasannya, sangat berguna bagi orang lain. Hal ini pun dapat menjadi inspirasi ide bagi saya dalam membahas tentang Excel di blog saya. Kebetulan saya ada pembahasan juga mengenai microsoft Excel di blog saya, silahkan berkunjung untuk melihatnya
BalasHapusmas kalau spin buttonnya tdk jl bagaimana yah?
BalasHapusMaaf, saya kurang paham dengan kata 'tdk jl'.
HapusSilakan postong ke milis Belajar-Excel di belajar-excel@yahoogroups.com
Bila belum menjadi member, silakan mendaftar lebih dulu. Berikut adalah website milis Belajar-Excel :
https://groups.yahoo.com/neo/groups/belajar-excel/info
terima kasih ilmunya, saya jadi pengen tanya nih mas, kalau boleh tau option button yang ada di dalam user form itu bisa di buat untuk menentukan worksheet yang akan ditempati tidak ya
BalasHapusHai Abhimanyu,
HapusApakah maksudnya adalah memilih sebuah option button dari beberapa option button yang disediakan dalam userform akan membuat sebuah worksheet menjadi aktif ?
Jika hal tersebut yang dimaksud, maka jawabnya bisa, yaitu dengan memanfaatkan event change milik option buton tersebut.
Misal ada 3 option button bernama opt1, opt2, dan opt3 yang telah di-set properti GroupName dengan nama grup yang sama. Misalnya groupname-nya adalah 'Aktifkan'.
Kemudian membuat blok prosedur event change dari masing-masing option button. Lalu diisi baris kode :
(misal di event change option button bernama opt1)
if opt1.value then
sheets("nama sheet yang diaktifkan opt1").activate
endif
Sesuaikan nama option button dan nama sheet yang akan diaktifkan di setiap event change agar sesuai dengan option button terkait.
Regards,
Kid
terima kasih atas inspirasinya...
BalasHapusmas mau tanya, bagaimana jika "option button" lebih dari 2 pilihan.
misalnya pilihan 1 memilih jenis kelamin (L / P), kemudian pilihan kedua memilih tingkat pendidikan (SD/SMP/SMU/S1 dst).
saya sudah mencoba, tapi pada saat saya memilih pendidikan, pilihan jenis kelamin akan hilang.
terima kasih sebelumnya
Mantab terima kasih banyak ilmunya
BalasHapusinfonya sangat bermanfaat min
BalasHapusalat buka gadget