MENULIS
VBA MACRO
Bab ini akan membimbing anda untuk mulai menulis macro di VBA. Anda akan belajar tentang lingkungan Visual Basic Editor, struktur dasar sebuah macro, bagaimana menjalankan danbagaimana menguji macro.
Bab ini juga akan menunjukkan kepada anda bagaimana untuk menjalankan macro ketika worksheet diaktifkan atau dinonaktifkan., ketika worksheet tersembunyi atau ketika workbook ditutup. Dan akhirnya, bab ini akan menjelaskan bagaimana anda dapat debugging macro anda untuk menemui kesalahan (error) pada macro tersebut.
o Menulis Macro Pertama Anda
Untuk latihan, anda dapat melakukan hal berikut.
1) Buka workbook baru dan tekan Alt + F11 untuk beralih ke Visual Basic Editor.
2) Dalam VBE, klik dua kali pada Sheet1 di jendela Project Explorer.
3) Ketika sub hitungArea() tanpa menggunakan huruf besar “S” sebagai awalan dari “sub”.
4) Setelah memasukkan tanda kurung tutup, tekan tombol Enter. Dua baris kode akan ditambahkan seperti berikut.
VBE menambahkan baris “End Sub” dan mengkapitalkan “S” sari “sub”. Selalu tulisan kode anda dalam huruf kecil. VBE akan mengkapitalkan huruf anda ketika kata (sintaks) dieja secara benar.
Ini merupakan salah satu fitur menarik yang dapat selalu anda gunakan saat menulis macro. Ketika VBE gagal mengkapitalisasi, ini berarti kemungkinan ada kesalahan dalam ejaan sintaks anda.
Lanjut dengan mengetik sintaks macro seperti berikut :
o Memahami struktur Dasar Macro
Bagian-bagian tertentu dari kode macro anda akan tampil dalam warnayang berbeda.anada tidak dapat mengubah font atau warna dijendela Code. Input akantampil dalam warna hitam, komentar dalam warna hijau, kata kunci (keyword) dalam warna biru dan ketika anda membuat kesalahan warna font berubah menjadi merah. Struktur macro anda terdiri dari bagian berikut.

Baris komentar (yang dimulai dengan tanda apostrof akan muncul dalam warna hijau) tidak diharuskan. Komentar macro merupakan sepotong teks yang tidak akan dieksekusi olh Excel VBA. Komentar ini digunakan untuk menjelaskan tujuan dari variable, fungsi, dan subroutine dari macro tersebut.
Setiap baris kode (sintaks) diberi sebanyak empat karakter secara default dengan tujuan membuat kode macro lebih mudah dibaca. Anda dapat mengubah identasi dengan memilih menu Tools > Options > tab Editor > masukkan lebar identasi baru di Tab Width.
Jika baris kode lebih panjang dari 100 karakter, VBE akan memecahkan menjadi baris baru dan member identasi tambahan sebanyak empat karakter.
Untuk melanjutkan satu baris kode, ketik spasi dan tanda garis bawah (_) pada akhir baris.
Anda dapat menulis beberapa baris kode dalam satu baris dengan menggunakan tanda titik dua ( : ) sebagai pemisah baris kode. Misalnya, dua baris kode berikut dapat ditulis sebagai satu baris.
Untuk menulis dalam satu baris kode, gunakan titk tanda dua seperti berikut.

Anda dapat melakukan operasi pada variable (misalnya nembah,mengurangi, mengalikan atau membagi) dengan menggunakan operator seperti +,-,*,/. Sintaks berikut member nilai 3.142 ke dalam variable, Pi.
Sintaks berikut mengalikan variable Pi dengan variable radius dan menampilkan hasilnya kedalam variable luas.
Excel VBA MsgBox (message box) merupakan sebuah kotak dialog yang dapat anda gunakan untuk mrnampilkan informasi. Misalkan, MsgBox “Area =”& area akan menampilkan teks “Area = “(tanpa tanda kutip ganda) diikuti dengan nilai variable area.
Operator & akan menggabungkan string “Area = “ bersama dengan nilai dari variable area yang dihitung.
o Menjalankan Macro
Untuk menjalankan macro, pilih menu Run > Run Sub/UserForm atau tekan tombol F5. Macro tersebut akan menampilkan popup InputBox dimana anda dapat mengetik nilai untuk radius dan klik OK unruk melanjutkan.
Selanjutnya luas area yang dihitung akan ditampilkan dalam MsgBox.

Excel memungkinkan anda untuk menjalankan macro etiap kali worksheet diaktifkan. Misalnya,anda dapat membuat macro yang menampilkan menu kustom setiap kali orksheet ditampilkan. Agar macro dapat berjalan saat worksheet diaktifkan, lakukan langkah berikut :
1) Tekan Alt + F11 untuk menampilkan VBA Editor.
2) Pada jendela Project Explorer, disisi kiri editor, klik ganda pada nama worksheet yang anda inginkan (misalnya, Sheet1.) jendela Code akan muncul.
3)
Dalam jendela Code, guinakan daftar pull-down kiri untuk memilih Worksheet dan kemudian gunakan daftar pull-down kanan untuk memilih Active. Kode berikut akanmuncul kode.
Dalam jendela Code, guinakan daftar pull-down kiri untuk memilih Worksheet dan kemudian gunakan daftar pull-down kanan untuk memilih Active. Kode berikut akanmuncul kode.
4) Dalam subroutine baru, masukkan macro yang ingin anda jalankan setiap kali worksheet diaktifkan. Semua macro yang didefinisikan dengan cara ini akan dijalankan setiap kali worksheet diaktifkan dan bukan hanya ketika anda tekan tombol F5.

Anda juga dapat membuat Excel menjalankan macro setiap kali worksheet tertentu dinonaktifkan. Misalnya, setiap kali anda klik pada tab worksheet lain (untuk meninggalkan worksheet aat ini), macro tersebut akan dijalankan.
Langkahnya sebagai berikut
2) Pilih tab Formulas > Define Name (grub Defined Names). Excel akan menampilkan kotak dialog New Name.
3) Dalam bagian Name masukkkan nama yang dimulai dengan nama worksheet, diikuti dengan tanda seru dan Auto_Deactivate, diikuti dengan perintah lain yang diinginkan. Jadi, jika worksheet itu bernama Stok, anda dapat memasukkan rumus seperti Stok!Auto_Deactivate_Exit .
4) Dibagian Refers to, masukkan formula yang merunjuk ke workbook dan macro yang ingin dijalankan secara otomatis. Jadi, jika nama macro itu adalah updateStok, dan nama workbook itu Stok.xlsx, maka anda akan memasukkan rumus seperti =Stok! Updatestok. Klik Ok untuk melanjutkan.

Anda dapat membuat Excel menjalankan macro secara otomatis setiap kali workbook tertentu ditutuo. Misalnya, ketika anda menutup workbook, anda mungkin ingin menjalankan macro yang menutup workbook, anda mungkin ingin menjalankan macro yang meminta pengguna untuk menyimpan data ke file yang lain.
Untuk menjalankan macro secara otomatis ketika workbook ditutup, anda perlu membuat macro dengan nama Auto_Close(). Macro berikut ini dijalankan secara otomatis setiap kali workbook yang terkait ditutup.
o Testing & Menyimpan Macro
Pengujian (testing)merupakan proses yang paling banyak memakan waktu dari setiap proyek VBA. Selama pengembangan proyek, anda akan menggunakan 20% dari waktu anda untuk menganalisa dan merancang, 15% untuk pemprograman dan 65% untuk pengujian (untuk memperbaiki bug, kesalahan ketik, atau kesalahan logis yang mungkin terjadi).
Untuk menguji macro, pilih menu debug > Step Into atau tekan tombol F8. VBE akan menyoroti baris kode pertama dalam warna kuning. Kemudian tekan tombol [F8] untuk melihat efek di worksheet pada setiap langkah saat macro tersebut dijalankan.
Baris komentar akan dilewati dan tidak diuji. Untuk membatalkan pengujian macro, pilih menu Run > Restet.
Ketika bekerja dengan macro di Excel 200, anda harus menyimpan dan membuka workbook dalam format macro-enable workbook(.xlsm) yang menyediakan keamanan tambahan. Bila anda membuat macro, anda harus menggunakan format macro-enabled untuk menyimpan workbook anda atau macro tersebut tidak akan disimpab. Pilih office button > Save As > Excel Macro-Enabled Workbook. Excel akan menambahkan ekstensi. xlsm untuk nama file macro anda.

Watch window memungkinkan anda untuk “memantau” nilai variabel atau ekspresi tertentu dan mengakibatkan eksekusi kode berhenti ketika nilai dari variabel atau ekspresi True diubah. Untuk menampilkan Watch Window, pilih menu View > Watch Window.
Untuk membuat titik watch yang baru, klik pada garis yang anda inginkan (misalnya, digaris,area = pi * Radius * Radius) dan pilih menu Debug > Add Watch. Selanjutnya ekspresi tersebut akan ditampilkan dijendela Add Watch .
o Debugging VBA
Setelah selesai menulis dan conpile macro anda – anda harus menguji dan memperbaiki (debug) kesalahan yang mungkin terjadi. Bagian ini menjelaskan berbagai cara debugging yang tersedia di Visual basic Rditor (VBE) dan cara menggunakannya.

Jendela Immediate adalah jendela di VBE di mana anda dapat memasukkan perintah dan melihat serta mengubah isi variabel ketika anda tidak mengeksekusi makro. Untuk menampilkan jendela Immediate, tekan tombol Ctrl + G atau pilih View > Intermediate Window.
Dalam jendela Immediate, anda dapat menampilkan isi dari variabel dengan menggunakan perintah ?. anda cukup mengetik tanda tanya (?) dikuti dengan nama variabel dan tekan tombol Enter.
Jendela Immediate kemungkinan akan menampilkan alamat, $AS1 yang menunjukkan alamatt sel dimana anda berada saat itu.
Anda juga dapat menjalankan perintah VBA dijendela Immediate dengan menghilangkan tanda tanya dan memasukkan perintah diikuti dengan menekan tombol Enter.
Kode makro di atas akan memberi nilai 1234 ke alamat sel, A1.
Jendela Immediate tidak mengizinkan anda untuk memasukkan potongan kode VBA dan mengeksekusi mereka bersama-sama karena jendela Immediate hanya akan mengeksekusi perintah yang anda masukkan ketika anda menekan tombol Enter.
Namun, anda dapat menggabungkan beberapa baris kode menjadi satu baris kode dengan menggunkan tanda titik dua (J dan mengeksekusi perintah ini secara bersama. Misalnya, kode berikut akan menampilkan teks, “Makro” tiga kali di jendela Immediate.
Jendela Immediate selalu bertindak seolah-olah tidak ada pertanyaan Option Explicit di modul aktif, artinya anda tidak perlu menetapkan variabel yang anda gunakan dalam perintah di jendela Immediate. Bila anda menggunakan kata kunci Dim unruk menetapkan variabel di jendela Immediate, sistem akan menampilkan error kompilasi.

Anda dapat menggunakan pernyataan Debug.Print manapun dalam kode anda untuk menampilkan pesan atau nilai-nilai variabel dijendela Immediate. Misalnya, anda dapat mengirim pesan ke jendela Immediate ketika bagian tertentu dari kode anda dijalankan.
Penggunaan Debug.Print memudahkan anda untuk mencetak arus pelaksanaan kode dan tidak akan mempengaruhi pelaksanaan kode anda sehingga aman untuk disisipkan dalam macro.
Pertanyaan Debug.Print akan mengirim pesan ke jendela Immedite sehingga anda sebelumnya harus memastikan jendela ini terbuka untuk dapat melihat pesan. Sayangnya, tidak ada perintah khusus (misalnya, ClrScr) yang disediakan untuk membesihkan (clear) hasil eksekusi program sebelumnya dari jendela Immediate sebelum menampilkan hasil dari eksekudi kode yang baru.

Dalam Excel, anda dapat menggunkan pertanyaan Debug.Assert untuk membuat kode berhenti sementara (break) jika kondisinya tidak terpenugi. Sintaks pernyataan Debug.Assert ditulis seperti berikut.
Di mana kondisi merupakan ekspresi yang mengembalikan nilai True atau False. Jika kondisi bernilai False atau 0, maka VBA akan berhento sementara (break) pada baris tersebut. Sebagai contoh, kode brikut akan break pada baris debug. Assert karena kondisi (X<100) mengembalikan nmilai False.
Debug.Assert adalah cara yang sangat berguna untuk menghentikan sementara kode ketika kondisi khusus atau tidak terduga terjadi. Perlu diingat, bahwa penggina terakhir (end user) tidak menginginkan kode program unuk masuk ke modus break dalam kondisi apapun, sehingga anda perlu memastikan bahwa pertanyaan tersebut telah dihapus sebelum mendistribusikan program anda.












Break points merupakan pengaturan pada baris kode tertentu yang menginformasikan kepada VBA untuk jeda (pause) sesaat sebelum baris kode dijalankan (break mode). Ketika VBA dalam modus break, anda dapat memasukkan perintah dalam jendela Immediate untuk menampilkan atau mengubah nilai variabel.
Untuk menempatkan titik break pada baris kode, posisikan kursor pada baris yang diinginkan dan tekan tombol F9 atau pilih menu Debug > Toggle Breakpoint. Untuk menghapus titik break, posisikan lursor pada baris dengan titik break dan tekan tombol F9 kembali atau Debug > Toggle Breakpoint lagi.
Ketika sebuah baris berisi titik break, latar belakang baris itu akan tampil berwarna. Sebelum baris kode ini dijankan, latar belakang baris akan ditampilkan dalam warna kuning, ketika titik break (breakpoint) ditemukan, eksekusi kode akan berhenti untuk sementara.
Anda tidak dapat menempatkan break point pada baris kosong, baris komentar, atau pada baris dimana anda menempatkan variabel (baris dengan pertanyaan Dim).
Setelah break point ditemukan, anda dapat melanjutkan eksekusi kode dengan menkan tombol F5 atau pilih menu Run>Continue. Atau anda dapat melanjutkan dengan kode berkut baris demi baris (lihat penjelasan Stepping through Code)\
Break point tidak disimpan dan jika anda menutup file, maka semua break point akan dihapus secara otomatis.

Saat anda ingin menguji kode, anda dapat melakukannya dengan menguji kode anda baris (stepping through) dan melihat perubahan yang terjadi pada setiap baris kode. Hal ini memudahkan anda untuk menentukan dengan tepat apa yang menyebabkan error pada macro anda.
Untuk menguji kode baris demmi baris, tekanF8 atau pilih menu Debug > Step Into untuk mengeksekudi setiap baris satu persatu dan menyoroti baris berikutnya dengan warna kuning. Baris yang disorot adalah baris kode yang akan di eksekusi ketika anda menekan tombol F8.
Jika prosedur anda memanggil prosedur (Sub atau Functions ) lain, menekan tombol F8 akan menyebabkan VBA berpindah ke prosedur tersebut dan mengaksekusi macro di dalamnya baris demi baris.
Anda dapat menggunakan Shif + F8 untuk “Step Over” prosedur tersebut atau memilih menu Debug > Step Over. Ini berarti bahwa seluruh prosedur yang dipanggil (called procedure) akan dijalankan sebagai satu baris kode. Hal ini dapat membuat debugging lebih mudah jika anda yakin bahwa masalahnya tidak teletak pada prosedur tersebut.
Ketika anda berada dalam suatu prosedur yang dipanggil ( called procedure ) anda dapat menggunakan tombol Ctrl + Shift + F8 atau pilih menu Debug > Tep Out untuk “Step Out” (melangkah Keluar) dari prosedur tersebut.
Ini akan menyebabkan VBA mengeksekusi sampai akhir prosedur tersebut (sampai pada pernyataan End Sub atau Exit Sub) dan berhenti dibaris kode berikut dari yang memanggil prosedur tersebut.

Perintah ini menginformasikan VBA untuk mengeksekusi kode sampai baris dimana kursor berada. Bila baris ini sudah tercapai, VBA akan masuk dalam mode break.
Hal ini mirip dengan menempatkan titik break pada baris kode, namun yang membekannya adalah apabila baris kode tersebut dieksekusi untuk kedua kalinnya, maka eksekusi kode tidak mengalami jeda (pause).

Jendela Locals menampilkan semua variable yang berada dalam prosedur (dan juga variable global yang ditempatkan pada tingkat prosedur tau tingkat module) dan nilai dari variable tersebut.
Hal ini memudahkan anda untuk melihat anda untuk melihat nilai dari setiap variable dari posisi dimana nilai variable tersebut berubah ketika anda melangkah (stp through) melalui kode anda. Untuk menampilkan jendela Locals, pilih menu View > Locals window. Jendela locals tidak mengijinkan anda untuk mengubah nilai-nilai variable seperti dalam jendela Immediate.
Saat anda menekan F8 untuk melangkah melalui kode anda jendela Locals akan menampilkan nilai dalam variable X dan Y.
Baris yang ditandai dengan warna kuning adalah baris saat ini dan merupakan baris yang akan dieksekusi.
Comments
Post a Comment