Belajar Vba
Belajar Vba
Panduan Belajar Macro VBA Excel untuk pemula dari dasar dengan cepat dan mudah dilengkapi
langkah-langkah persiapan serta cara membuat dan menjalankan sebuah macro sederhana
menggunakan VBA.
Apakah anda sudah pernah mendengar istilah Macro atau VBA? Saya yakin sudah. Kalau belum,
sepertinya anda sedang tersesat sehingga sampai di blog tutorial excel ini.
Sebagai pengguna excel yang aktif belajar untuk meningkatkan kemampuan dalam memaksimalkan
office excel, tentunya anda sering melakukan diskusi dan tanya jawab seputar permasalahan-
permasalahan excel.
Diantara masalah-masalah tersebut ternyata solusinya adalah dengan menerapkan kode-kode macro
VBA yang barangkali bukannya menyelesaikan masalah malah menimbulkan masalah baru untuk
anda. Ya, masalah anda bertambah karena merasa sulit dan bingung untuk menggunakan atau
memahami maksud kode-kode macro VBA tersebut.
Dari yang saya pernah saya alami, umumnya hal tersebut disebabkan oleh metode belajar VBA
yang melompat jauh, terlebih ketika sebelumnya anda belum pernah sama sekali mengenal satupun
bahasa pemrograman komputer.
Ibaratnya anda belum menguasai sepenuhnya tentang teknik penjumlahan, pengurangan, pembagian
dan perkalian namun kemudian coba-coba belajar kalkulus. Wah makhluk apa lagi kalkulus ini?
Sama, saya juga tidak mengerti. Kalau memang benar-benar ingin tahu silahkan manfaatkan
Google, Bing atau Yahoo! dan kawan-kawannya.
Ngomong-ngomong Indonesia juga punya Search Engine yang tidak kalah menarik lho. Namanya
Geevv, sudah pernah dengar? Abaikan dulu soal Kalkulus dan Geevv tadi, kita kembali ke masalah
Sebelum lebih jauh mempelajari tentang VBA Macro excel kita kenalan dulu dengan istilah VBA
dan Macro pada Microsoft Excel ini.
Pengertian VBA
VBA merupakan singkatan dari Visual Basic for Application yang merupakan turunan dari bahasa
Visual Basic yag dikembangkan oleh Microsoft.
Visual Basic sendiri merupakan turunan bahasa pemrograman BASIC (Beginners' All-purpose
Symbolic Instruction Code) yang dikembangkan pada tahun 1963 oleh John George Kemeny dan
Thomas Eugene Kurtz yang berasal dari Dartmouth College.
Jika anda sudah cukup mengusai bahasa Basic maka anda akan lebih mudah untuk belajar bahasa
Visual Basic (VB) dan seterusnya jika anda cukup menguasai bahasa VB maka sudah pasti anda
akan lebih mudah untuk menguasai bahasa VBA (Visual Basic for Application).
Jangankan Bahasa Visual Basic atau Bahasa Basic, Saya malah baru baca ada istilah bahasa
pemrograman.
Anda bisa membayangkan sebuah bahasa pemrograman semisal VBA sebagai bahasa untuk
komunikasi sesama manusia dimana kita megenal istilah bahasa Inggris, bahasa Jerman, bahasa
Belanda, Bahasa Korea, Bahasa Indonesia dan lain sebagianya.
Alih-alih digunakan untuk komunikasi sesama manusia bahasa pemrogaraman komputer digunakan
oleh manusia untuk berkomunikasi dengan komputer lebih tepatnya untuk memberikan instruksi
atau perintah-perintah untuk menjalankan tugas dan fungsi terentu.
Berbeda dengan VB yang umumnya digunakan untuk membuat sebuah aplikasi yang berdiri sendiri
(Stand Alone), seperti yang bisa dibaca dari namanya, VBA didesain untuk bekerja diatas aplikasi
lain. Pada istilah VBA Excel, aplikasi lain ini adalah office excel itu sendiri. Sehingga VBA tidak
akan dapat berjalan tanpa adanya excel.
VBA tidak hanya ada di excel saja, pada paket program office lainnya juga sudah disertakan VBA,
sehingga dikenal jugaVBA Access, VBA Word, VBA Power point dan lain sebagainya. Meskipun
dengan cara kerja yang sama tentunya dengan kekhasan masing-masing. anggaplah kalau VBA
adalah bahasa daerah maka VBA Excel, VBA Access, VBA Word dan VBA Power point adalah
logat atau dialek untuk sebuah bahasa daerah.
Karena blog ini membahas excel tentunya VBA yang dimaksud pada tutorial ini dan tutorial-tutorial
selanjutnya adalah VBA Excel. yakni sebuah bahasa pemrogaraman komputer yang memungkinkan
kita untuk berkomunikasi atau memberikan instruksi-instruksi tertentu dengan excel.
Ringkasnya VBA adalah bahasa pemrograman yang dikembangkan oleh Microsoft yang disertakan
dalam sebagian besar produk yang merupakan bagian dari Microsoft Office.
Untuk memastikan kode-kode VBA yang akan kita tulis berjalan normal pastikan bahwa excel yang
anda gunakan sudah mengijinkan penggunaan macro. Caranya sebagai berikut:
Pada bagian TAB Developer, klik "Macro Security" yang ada di group "Code".
Setelah muncul window Trust center atur saja seperti pada gambar dibawah ini:
Keterangan:
1. Disable all macros without notifications: Macro disable tanpa notifikasi. Macro
tidak boleh dijalankan sama sekali
2. Disable all macros with notifications: Macro disable dengan notifikasi, macro bisa
berjalan jika diijinkan oleh User.
3. Disable all macros except digitally signed macros: Opsi ini hanya akan
mengijinkan Macro (VBA) yang telah disertai kartu digital. Penjelasan lebih lanjut
bisa anda pelajari pada halaman ini.
4. Enable all macros (not recommended, potentially dangerouscode can run):
Mengijinkan semua macro untuk dapat dijalankan pada excel
5. Trust Acces to the VBA project object model: Item pilihan ini merupakan ijin
khusus untuk dapat mengakses komponen VBProject. Jika dicentang, maka akan
diberikan ijin untuk mengakses komponen VBProject.
Setting Trusted Locations
Selain menggunakan digital signature, untuk file excel yang mengandung VBA terpercaya bisa
melewati bagian security macro dengan meletakkan file tersebut pada sebuah lokasi terpercaya
atau trusted locations.
Dengan menyimpan file pada folder terpercaya ini maka file excel yang berisi kode-kode macro
VBA dapat berjalan tanpa pemeriksaan sehingga memunculkan peringatan atau notifikasi seperti
biasanya. Lokasi ini biasa anda setting pada Trust Center pada bagian Trusted Locations.
Berikut langkah-langkah pengaturan yang perlu anda lakukan untuk memasukkan folder
"KelasVBA" yang telah kita buat sebelumnya sebagai salah satu lokasi yang dipercaya(trusted
locations):
1. Pada bagian TAB Developer, klik "Macro Security" yang ada di group "Code" seperti
sebelumnya.
2. Setelah muncul window Trust center pilih bagian "Trusted Locations"
3. Berikutnya pilih Add new location.
4. Pilih tombol menu Browse dan cari lokasi folder yang akan adan percaya tadi.
5. Jika sub folder atau folder lain yang ada di dalam folder yang kita pilih juga akan anda
masukkan ke dalam lokasi terpercaya, centang bagian Subfolders of this location are also
trusted
6. Selanjutnya berikan deskripsi untuk lokasi terpilih (opsional)
7. Klik OK dan OK lagi untuk keluar pengaturan
Apabila langkah-langkah yang anda lakukan benar maka hasilnya kurang lebih seperti ini:
Loch jangan bengong, silahkan disimpan file pada folder yang sudah anda tentukan tadi?
Atau jangan-jangan anda malah belum membuka program excelnya? Loch, kita kan belum
menulis kode sama sekali? Ya ndak apa-apalah, kita nyicil bikin filenya dulu.
Oke sampai tahap ini kita sudah mempunyai file excel dengan nama "Kelas Excel - Macro
1.xlsm" yang tersimpan di folder "Kelas VBA".
Selanjutnya kita akan menulis kode atau script macro pertama kita. OK
Membuka Visual Basic Editor
Langkah selanjutnya adalah membuka VBE atau Visual Basic Editor. VBE merupakan fasillitas
untuk berinteraksi menyusun kode-kode VBA.
Cara untuk membuka VBE di excel ini ada tiga:
1. Pada TAB Developer--Grup Code--Pilih menu Visual Basic.
2. Klik kanan nama sebuah sheet dalam sheets tab kemudian pilih View Code.
3. Cara terakhir dan paling mudah adalah dengan menggunakan Shortcut Alt+F11.
Setelah anda berhasil membuka Visual Basic Editor (VBE) maka tampilannya kurang lebih sebagai
berikut:
Untuk saat ini biarkan saja tampilan VBE seperti itu pada tutorial senaljutnya akan kita bahas lebih
detail mengenai opsi-opsi(options) yang terdapat pada VBE Excel ini.
Ketika Anda melakukan double click pada Modul di VBA Project window (jendela Proyek VBA),
kode modul tersebut akan ditampilkan di main code window (jendela kode utama). Sebuah modul
baru biasanya kosong, namun mungkin berisi teks "Option Explicit" jika Anda telah mengaktifkan
opsi ini. Tentang Option Explicit akan dijelaskan pada bagian lain.
Sub MacroPertama() MsgBox "Saya sedang belajar macro VBA" End Sub
Panduan Macro VBA ini menunjukkan langkah-langkah persiapan serta cara membuat dan
menjalankan sebuah macro sederhana menggunakan VBA.
Untuk saat ini Anda telah siap untuk memulai belajar VBA Excel pada tahap selanjutnya. Silahkan
dibaca ulang dan berikan tinggalkan komentar setelah mengikuti panduan macro sederhana di atas.
Pada tutorial VBA Excel Dasar selanjutnya kita akan belajar lebih dalam tantang Visual Basic
Editor. Salam Kelas Excel.
DAFTAR ISI
Pengertian Tentang Visual Basic Editor
Cara Membuka VBE Excel
Bagian-bagian VBE Excel
1. Menubar VBE
2. Toolbar VBE
3. Project Window
4. Properties Window
5. Code Window
6. Immediate Window, Locals Windows dan Watch Window
Pengaturan VBE Options
1. TAB Editor
2. TAB Editor Format
3. TAB General
4. TAB Docking
2. Klik kanan nama sebuah sheet dalam sheets tab kemudian pilih View Code.
3. Cara terakhir dan paling mudah adalah dengan menggunakan Shortcut Alt+F11.
BAGIAN-BAGIAN VISUAL BASIC EDITOR (VBE)
Menu Bar
Apabila anda sudah terbiasa menggunakan komputer saya kira anda sudah tidak asing lagi dengan
model tampilan ini yang pada dasarnya memang memiliki fungsi yang sama dengan aplikasi
komputer pada umumnya.
Menu bar pada dasarnya berisi beberapa menu drop-down. Setiap menu drop-down berisi perintah
(command) yang dapat digunakan untuk berinteraksi dan melakukan berbagai hal dengan berbagai
komponen VB Editor.
Menu-menu tersebut antara lain: File, Edit, Insert, Format, Debug, Run, Tools, Addins, Window,
dan Helps.
Pada beberapa bagian menu ini disertai juga dengan keyboard Shortcut yang bisa anda gunakan
untuk mengakses perintah-perintah tertentu dengan lebih cepat.
Pada bagian ini ada beberapa opsi yang perlu kita samakan, lebih lanjut akan dibahas pada bagian
selanjutnya di bawah.
Toolbar
Bagian Toolbar pada VBE berisi tombol, ikon, menu atau elemen serupa lainnya yang dapat
digunakan saat bekerja dengan VBE. Masing-masing icon menu pada toolbar mewakili satu
perintah atau fungsi tertentu.
Secara default VBE hanya menampilkan 1 jenis kelompok toolbar yakni "Standart Toolbar".
Sebenarnya masih ada 3 toolbar lain yang bisa juga anda tampilkan, yakni:
1. Debug toolbar
2. Edit toolbar
3. UserForm toolbar
Keempat jenis toolbars ini bisa anda atur tampilannya pada menu View--Toolbars.
Project Window atau dikenal juga sebagai Project Explorer terletak di sebelah kiri, bagian ini
menunjukkan semua workbook yang terbuka termasuk yang tersembunyi (hidden). Setiap
workbook atau addins yang terbuka akan ditampilkan sebagai project yang terpisah.
Jika Project Window tidak terlihat secara default di VBE, gunakan shorcut Ctrl+R untuk
membukanya.
Microsoft mengartikan Project sebagai "A set of modules". Sebuah project yang terlihat pada VBE
merupakan sekumpulan object yang tersusun secara sistematis sesuai kelompok objectnya.
Pada sebuah VBAProject setidaknya memuat 1 set kelompok object yang disebut "Microsoft Excel
Objects" dan akan menampilkan set lainnya jika memang ada.
Berikut beberapa set, node atau kelompok object yang ditampilkan pada setiap project VBA:
1. Microsoft Excel Objects: Set ini akan selalu ada pada setiap project VBA Excel dan
setidaknya akan memuat 2 jenis object:
o Object workbook yang disebut sebagai "ThisWorkbook". Object ini mewakili setiap
file excel.
o Object worksheet. Setiap worksheet akan ditampilkan sebagai object yang terpisah.
Apabila pada file anda ada 3 buah sheet maka akan ada 3 object yang tampil untuk
jenis ini dan akan bertambah atau berkurang sesuai dengan jumlah sheet yang ada
pada setiap file excel
2. Modules: Jika anda membuat sebuah module maka akan ditampilkan pada bagian ini. Cara
menambahkan modul juga sudah dibahas pada tutorial sebelumnya.
3. Forms: Apabila anda membuat sebuah form maka akan muncul set Forms ini. Setiap anda
membuat sebuah form baru maka objectnya akan dimasukkan ke dalam set atau node ini.
4. Class modules: Jika anda membuat sebuah class module, maka akan terlihat di node ini.
5. References: Jika project anda memuat sebuah referensi khusus maka akan ditambahkan
sebuah node References. Bagian ini barangkali akan jarang anda lihat sebab memang sangat
jarang digunakan untuk pemula seperti kita-kita ini.
Pada bagian atas Project Explorer ada 3 icon dengan fungsi sebagai berikut:
1. Icon View Code: Untuk menampilkan kode yang tersimpan pada object terkait
2. Icon View Object: Untuk menampilkan bentuk object terkait
3. Icon Toggle Folders: Untuk menampilkan object-object pada Project Explorer secara
berkelompok dalam group tertentu atau sebaliknya.
Anda tidak perlu terlalu memusingkan diri dengan beberapa istilah yang barangkali masih asing di
atas. Yang terpenting pada bagian ini adalah anda cukup memahami bagaiamana VBE menampikan
setiap object pada sebuah project VBA secara terstruktur di bagian Project Window VBE.
Ada 2 Cara untuk menyembunyikan bagian Project Explorer atau Project Window ini:
1. Klik icon "x" atau close button pada sudut kanan Project Explorer.
2. Klik Kanan pada bagian manapun di dalam Project Explorer kemudian pilih menu "Hide".
Bagaimana Cara Menampilkan Project Explorer
Jangan panik saat Project Window atau Project Explorer hilang dan tidak terlihat di VBE. Cara
untuk menampilkannya kembali setidaknya ada 3:
1. Klik atau pilih menu View--Project Explorer
2. Pada Standart Toolbar klik atau pilih icon Project Explorer
3. Cara yang lebih efisien adalah dengan menekan shortcut CTRL+R
Properties Window
Properties Window menampilkan pengaturan properti dari setiap objek yang sedang aktif atau
terpilih di Project Explorer. Fungsi Properties Window (Jendela Properti) adalah untuk mengatur
properti dari masing-masing object VBA. Misalnya untuk mengubah nama object agar lebih mudah
dikenali dan kita ingat.
Untuk anda yang masih mulai belajar VBA sepertinya bagian ini belum terlalu akan anda butuhkan.
Bagaimana Cara Menyembunyikan Properties Window
Sama seperti pada bagian Project Explorer, anda bisa juga menyembunyikan bagian Properties
Window pada VBE.
Ada 2 Cara untuk menyembunyikan bagian Properties Window ini:
1. Klik icon "x" atau close button pada sudut kanan Properties Window.
2. Klik Kanan pada bagian manapun di pada Properties Window kemudian pilih menu "Hide".
Code Window
Code Window dikenal juga sebagai Programming window atau Module Window adalah tempat
dimana kita menuliskan kode atau script VBA.
Pada bagian ini kode-kode VBA akan ditampilkan. Dibagian ini pula anda akan melakukan editing
sebuah kode atau script VBA baik menambah kode mengurangi atau menghapus sebuah kode VBA.
Secara default jika anda membuka sebuah object tertentu maka bagian ini akan terlihat kosong.
Code Window akan menampilkan kode atau srcipt VBA untuk masing-masing object VBA pada
setiap project VBA anda.
Beberapa alternatif cara untuk mengakses setiap Code Window untuk setiap object VBA adalah
sebagai berikut:
1. Pilih object pada Project Explorer kemudian pilih menu View--Code.
2. Pilih object kemudian klik icon View Code pada bagian atas Project Explorer.
Bagian VBE ini bisa juga disembunyikan dan ditampilkan kembali seperti bagian-bagian lainnya.
Sebagai contoh saya akan membahas Immediate Window saja. Untuk kedua window lainnya
caranya sama hanya butuh sedikit penyesuaian saja.
Bagaimana Cara Menyembunyikan Immediate Window
Ada 2 Cara untuk menyembunyikan bagian Immediate Window pada VB Editor excel:
1. Klik icon "x" atau close button pada sudut kanan Immediate Window.
2. Klik Kanan Immediate Window kemudian pilih menu "Hide".
Setelah memahami beberapa bagian dasar dari tampilan VBE di atas, pada bagian ini akan
menjelaskan tentang pengaturan pada options VBE.
Meskipun tidak wajib anda lakukan saya kira menjadi penting untuk menyamakan pengaturan atau
options VBE ini agar ke depan anda lebih mudah untuk mengikuti panduan-panduan VBA yang
kami tuliskan pada blog ini.
Menampilkan VBE Options
VBE Options bisa anda temukan pada menu Tools kemudian pilih Options....
Setelah memilih menu tersebut, pada VBE Options window yang muncul akan terlihat ada 4 TAB:
1. Editor
2. Editor Format
3. General
4. Docking
TAB Editor
TAB ini dibagi dalam 2 kelompok: Code Setting dan Windows Setting.
Code Setting
Untuk bagian ini saya sarankan untuk anda checklist semua seperti yang terlihat di contoh gambar.
Auto Syntax Check
Jika di centang maka VBE akan aktif memeriksa setiap penulisan script sehingga akan
segera diketahui jika ada kesalahan penulisan kode VBA ketika berpindah baris.
Require Variable Declaration
Opsi ini menentukan apakah VBE akan secara otomatis menambahkan statement "Option
Explicit" di awal modul VBA yang anda buat.
Apabila statement ini ada pada awal module VBA maka akan mewajibkan anda untuk
melakukan deklarasi variabel atau mendefinisikan (secara eksplisit) semua variabel yang
Anda gunakan di modul tersebut.
Secara default opsi ini memang tidak tercentang. Untuk anda yang sedang memulai belajar
VBA saya sarankan opsi ini anda centang atau anda aktifkan. Sehingga kita bisa sekaligus
belajar untuk bermain variabel.
Walaupun pada prakteknya anda akan menghadapi banyak kesulitan karena aktifnya opsi
ini, percayalah opsi ini akan sangat bermanfaat untuk anda ke depannya.
Auto List Members
Otomatis menampilkan daftar anggota sebuah object, baik berupa properties, methods,
maupun konstanta yang dimilikinya.
Auto Quick Info
Otomatis menampilkan informasi argument sebuah functions, properties atau methodes
VBA sehingga memudahkan dalam pengisian parameter-parameter input yang dipilih.
Auto Data Tips
Otomatis menampilkan informasi bagian yang ditunjuk mouse ketika debugging saat dalam
mode break.
Auto Indent
Tercermin dari nama opsinya, bagian ini akan membuat indent setiap baris kode VBA sama
dengan indent baris sebelumnya.
Windows Setting
Drag-and-Drop Text Editing
Jika Anda mengaktifkan Drag-and-Drop Text Editing, Anda akan dapat memindahkan
potongan teks atau kode VBA menggunakan mouse Anda dengan cara Drag and Drop.
Default to Full Module View
Jika opsi ini diaktifkan, code window akan menampilkan semua prosedure yang terdapat
pada sebuah object. Jika pilihan dimatikan (tidak tercentang), Anda hanya akan dapat
melihat 1 prosedure saja dan butuh menggunakan menu drop-down di sudut kanan atas code
window untuk beralih antar prosedure.
Procedure Separator
Jika diaktifkan maka pada akhir setiap prosedure akan ditampilkan sebuah garis pembatas
yang tentunya akan membantu penglihatan kita untuk membedakan setiap prosedure yang
ada, khususnya dalam mode Full Module View.
Apabila ada bagian ini yang perlu penjelasan silahkan ditanyakan pada bagian komentar yang
tersedia di bawah.
TAB General
TAB General pada option VBE mengatur beberapa hal yang bersifat umum dalam beberapa
kategori semisal Form, penanganan error serta bagaimana kode VBA di kompilasi.
Form Grid Settings
memungkinkan Anda mengontrol bagaimana cara VBE menangani UserForms.
Show ToolTips
ToolTips adalah deskripsi atau keterangan yang ditampilkan oleh VBE untuk membantu
Anda memahami fungsi dari sebuah tombol toolbar tertentu. Jika Show ToolTips diaktifkan,
ToolTips akan tampil secara otomatis setiap kali Anda mengarahkan kursor ke tombol
tertentu.
Collapse Proj. Hides Windows
Opsi ini akan membuat VBE menyembunyikan window terkait project tertentu saat project
tersebut Anda tutup. Berlaku untuk project, UserForm, object atau module windows.
Pada bagian ini biarkan saja seperti apa adanya secara default. Untuk anda yang baru mengenal
Visual Basic Editor untuk belajar VBA, pengaturan default di TAB General sudah cukup baik.
TAB Docking
Tab Docking digunakan untuk mengatur perilaku setiap windows yang berbeda dari VBE. Jika
tercentang maka VBE akan menempatkan windows atau jendela terkait pada bagian tepi jendela
VBE.
Bagian pengaturan disini akan berpengarauh terhadap bagaimana anda akan menata window-
window pada VBE.
Dengan opsi seperti gambar, maka semua window selain code window tidak dapat memasuki
programming workspace yang berisi code window.
Selain itu, setiap window juga tidak memiliki control maximize atau minimize. Kelebihannya,
letak setiap window tersebut bisa dipindahkan ke sisi manapun dari programming workspace
dengan cara Drag and Drop ke sisi manapun yang anda kehendaki. Misal, project explorer di drag
ke area kanan programming workspace, maka akan tampak garis maya yang menunjukkan letak
yang dapat ditempati oleh project explorer.
Jika proses drag tadi di Drop atau dilepaskan saat berada di atas code window, maka project
explorer akan mengambang di atas code window. Untuk mengmbalikannya adalah dengan double
click window project explorer.
Ketika setting options pada tab docking tidak dicentang, maka window tersebut akan diletakkan
didalam programming workspace seperti code window yang ada disana. Window yang diletakkan
dalam programming workspace akan memiliki control maximize maupun minimize.
Jika window seperti project explorer atau properties window tertutup, maka untuk menampilkan
kembali adalah melalui menu View dan memilih salah satu window yang ingin ditampilkan.
Baiklah, saya cukupkan dulu untuk pembahasan Visual Basic Editor (VBE) di Excel kali ini, lain
kali akan saya update lagi jika memang diperlukan. target utama pembahasan kita kali ini adalah
mengenalkan anda dengan Visual Basic Editor yang juga sering disebut sebagai VB Editor atau
VBE sebagai tools yang akan sering anda gunakan dalam membuat kode-kode VBA.
Jika tidak ada halangan atau berubah fikiran setelah ini kita akan belajar tentang module dan
prosedure, scope, variabel dan konstanta, serta tipe data pada VBA Excel.
Oh ya, jika berkenan Support dengan berkomentar dan Share panduan ini, agar saya bisa lebih
bersemangat untuk menuliskan panduan atau tutorial-tutorial berikutnya.
Akhir kata semoga bermanfaat dan sampai jumpa pada seri panduan VBA Dasar berikutnya.
Seri Panduan VBA Excel Dasar yang bisa anda pelajari:
1. Pengenalan VBA Excel
2. Visual Basic Editor (VBE)
3. Module dan Procedure Pada VBA Excel
4. Tipe Data Pada VBA Excel
5. Konstanta dan Variabel Pada VBA Excel
6. Sub Procedure Pada VBA Excel
7. Cara Menjalankan Sub Procedure VBA Excel
8. Function Procedure Pada VBA Excel
9. Cara Menggunakan Function Procedure VBA Excel
Penjelasan lebih lanjut mengenai VBE atau Visual Basic Editor bisa anda pelajari pada bagian
kedua seri Tutorial VBA Dasar ini, sedangkan pada bagian ketiga ini Anda akan kami ajak untuk
mengenal lebih jauh tentang apa itu Module dan Procedure pada VBA Excel.
Saya kira pembahasan ini cukup penting dan masih jarang sekali ada yang membahasnya.
Meskipun hanya sebatas gambaran umum, dengan panduan ini harapannya Anda yang masih mulai
belajar VBA akan mendapatkan gambaran bagaimana dan dimana harus menuliskan script-script
VBA secara benar.
DAFTAR ISI
Module VBA Excel
Procedure VBA Excel
Struktur Procedure
Statement Pembuka Procedure
1. Gambaran Umum Scope
2. Jenis Procedure VBA
3. Menamai Procedure
Baris Penulisan dan Kode Program
Statement Penutup Procedure
Latihan Membuat Procedure
Pada VBA Excel, setidaknya dikenal ada 4 macam tipe Module sebagai berikut:
1. Standart Module:
Biasa disebut sebagai modul kode atau modul saja merupakan jenis modul umum yang
dapat diisi dengan banyak prosedur serta fungsi-fungsi tertentu. Tipe modul inilah yang
akan sering anda gunakan dalam menyusun kode-kode VBA.
2. Workbook dan Sheet Module
Adalah modul khusus yang terikat langsung pada objek Workbook dan Sheet. Modul untuk
workbook disebut ThisWorkbook, dan modul untuk setiap sheet atau Lembar kerja memiliki
nama yang sama dengan nama sheetnya. Jenis modul ini sebenarnya mirip dengan Standart
Module, hanya saja pada jenis ini dapat juga diisi dengan event procedures.
Event procedure ini semacam detonator atau pemicu aktifnya sebuah kode. Jika anda sudah
pernah mengenal VBA saya kira anda sudah cukup faham bahwa untuk menjalankan sebuah
kode butuh pemicu tertentu semisal klik pada sebuah tombol. Selain menggunakan tombol
sebuah kode juga bisa berjalan dalam kondisi tertentu. Kondisi atau aktifitas yang terjadi
pada object VBA inilah yang dimaksud dengan Event, misal kita ingin menjalankan
beberapa baris kode saat file dibuka, saat sebuah sheet aktif dan lain sebagainya, maka event
procedure inilah yang kita butuhkan. Lebih lanjut mengenai event procedure ini akan kita
bahas lain waktu.
3. User Forms
Merupakan jenis modul yang merupakan bagian dari objek UserForm, dan berisi prosedur-
prosedur VBA serta event procedure untuk kontrol-kontrol yang terkait dengan objek Form.
4. Class Module
Modul jenis ini digunakan untuk membuat sebuah objek baru pada VBA. Untuk saat ini
anda tidak perlu terlalu memikirkan jenis modul ini.
Pada modul-modul inilah nantinya Anda akan menempatkan dan mengelompokkan prosedur-
prosedur VBA sesuai kebutuhan.
Pada saat membuat sebuah file excel, kemudian membuka VBE maka excel secara otomatis sudah
menyiapkan modul workbook dan modul sheet sejumlah sheet yang terdapat pada file tersebut.
Defaultnya ada tiga modul sheet yang bisa anda kurangi atau anda tambahkan sesuai kebutuhan.
Adapun untuk jenis modul yang lain anda harus menambahkannya secara manual melalui menu
insert seperti yang sudah dijelaskan pada panduan sebelumnya.
Tipe Modul 2 dan 3 atau Modul Workbook, sheet dan User forms biasa juga disebut sebagai
Object Module sebab modul-modul ini memiliki bentuk nyata berupa Workbook, WorkSheet,
Userform, Chart, dan lain-lain. Umumnya kode-kode VBA yang terdapat pada modul ini hanya
berlaku pada object terkait. Misal pada Modul Sheet1 maka kode-kode yang kita buat didalamnya
hanya berlaku untuk Sheet1 saja dan tidak bisa dipanggil untuk Sheet2.
Adapun Standart Modul atau Modul Tipe 1 biasa disebut juga sebagai Code Module (Modul
Kode) merupakan wadah untuk seluruh prosedur atau variabel yang bisa digunakan oleh module
yang lainnya juga, selama prosedur atau variabel tersebut dideklarasikan sebagai Public.
Anda bisa menambahkan Code Module ini sebanyak yang dibutuhkan, meskipun sebenarnya kita
cukup membuat satu standart module saja untuk menempatkan kode-kode VBA, hanya saja jika
kode-kode itu terlalu kompleks ada kalanya kita butuh mengelompokkan prosedure-prosedur yang
kita buat didalam modul tersebut dengan tujuan memudahkan dalam hal menejemen kode.
Beberapa kali saya menyebutkan istilah procedure, sebenarnya barang macam apa sih ini?
Seperti terlihat pada contoh prosedur di atas, cara penulisan sebuah prosedur sederhana setidaknya
seperti dibawah ini:
Perintah "MsgBox" pada VBA digunakan untuk menampilkan sebuah kotak pesan dengan isi pesan
tertentu. Detail tenang perintah-perintah ini akan kita bahas lain waktu.
Selanjutnya akan kita pelajari penjelasan umum untuk masing-masing bagian pada prosedur VBA.
Ketiga hal diatas adalah bentuk tersederhana dalam deklarasi prosedure. Jadi, setiap deklarasi
prosedur, minimal akan selalu berisi 3 hal tersebut, yaitu: scope, jenis prosedur, nama prosedur.
Sebenarnya statement deklarasi sebuah prosedur VBA tidak hanya ini saja, ada beberapa keyword
lain yang juga bisa Anda sertakan, hanya saja untuk menyederhanakan pembahasan, 3 bagian utama
deklarasi ini saya kira sudah cukup untuk saat ini.
Istilah statement yang dapat juga dimaknai sebagai sebuah instruksi pada VBA merujuk pada 2
hal:
Declaration statements atau Pernyataan deklarasi, seperti yang tersirat dari namanya,
digunakan untuk menyatakan sesuatu seperti variabel atau konstanta. Pada procedure VBA
pernyataan deklarasi berisi keyword-keyword yang mengandung maksud tertentu.
Executable statements atau Pernyataan ekseskusi adalah pernyataan untuk melakukan
tindakan atau aktifitas tertentu yang harus dilakukan, umumnya statement ini merupakan
kode-kode program didalam sebuah procedure.
Anda tentu sudah mengenal berbagai macam functions atau fungsi excel semisal fungsi
SUM, AVERAGE dan lain sebagainya. Cara kerja Function Procedure ini sangat mirip
dengan fungsi-fungsi excel ini. Hanya saja fungsi-fungsi tersebut memang sudah ada
didalam excel. Jika kita membutuhkan fungsi tertentu yang belum ada, Anda bisa membuat
sebuah fungsi khusus yang sering disebut sebagai UDF (User Defined Functions) semisal
fungsi terbilang excel.
Lain waktu akan kita ulas lebih dalam tentang kedua tipe procedure ini pada sebuah artikel
tersendiri. Untuk saat ini silahkan Anda biasakan dulu untuk menggunakan prosedur dengan tipe
Sub terlebih dahulu.
Selain kedua jenis prosedur di atas sebenarnya masih ada jenis prosedur lainnya pada VBA excel
yakni Jenis Property Procedure.
Prosedur jenis ini digunakan untuk mengisi nilai ke sebuah variabel atau mengambil nilai dari
sebuah variabel.
Umumnya jenis prosedur property digunakan ketika membentuk sebuah custom class dalam Class
Module. Jadi, pada dasarnya, prosedur jenis ini bisa digunakan dimana saja seperti halnya prosedur
jenis Sub maupun Function.
Prosedur property terdiri dari :
1. Let: untuk memasukkan nilai kedalam variabel selain object dan kerjanya mirip dengan
penggunaan jenis Sub
2. Set: untuk memasukkan nilai kedalam variabel object dan kerjanya mirip dengan
penggunaan jenis sub
3. Get: untuk mengambil nilai dari suatu variabel dan kerjanya mirip dengan jenis Function
Lain waktu akan kita bahas tentang property, namun sebelum itu Anda harus sudah memahami dulu
tentang Tipe Sub dan Function.
Nama Procedure VBA Excel
Sebuah Prosedur harus diberi nama. Aturan utama yang harus Anda ikuti saat menamai sebuah
prosedur VBA adalah sebagai berikut:
1. Karakter pertama harus berupa Letter Abjad (A-Z,a-z).
2. Karakter berikutnya dapat berupa huruf, angka atau karakter tanda baca tertentu (tidak
semua tanda baca bisa digunakan).
3. Tidak boleh memakai titik (.) Dan spasi ( ) juga tidak bisa memakai karakter berikut: #, $,%,
&, @, ^, * dan !.
4. Tidak ada perbedaan antara huruf besar dan huruf kecil.
5. Jumlah maksimum karakter yang bisa digunakan adalah 255.
Penjelasan lain mengenai aturan menamai procedure ini bisa anda baca pada halaman microsoft
berikut.
Sebaiknya nama yang digunakan untuk sebuah procedure itu deskriptif, bermakna dan tidak ambigu
sehingga dapat mewakili tujuan atau fungsi dari prosedure tersebut. Dengan demikian saat anda
membaca namanya saja anda akan dengan mudah mengetahui maksud dari isi kode program pada
procedure tersebut. Jadi jangan asal-asalan membuat sebuah nama procedure sehingga Anda akan
dibuat bingung saat sebuah project VBA sudah memuat banyak procedure.
Baris kode pada sebuah prosedur VBA selalu diproses baris per baris. Jadi bedakan antara baris
program dan baris penulisan.
Baris program pastilah selalu satu baris. Satu baris program ini bisa ditulis dalam beberapa baris
penulisan dan ada kemungkinan beberapa baris program ditulis dalam satu baris penulisan.
Dalam penulisan baris program, terdapat beberapa karakter khusus yang memiliki arti atau
tujuan khusus, antara lain :
Tanda petik tunggal (')
Karakter ini menandakan bahwa mulai dari karakter petik tunggal ini merupakan sebuah
keterangan atau teks yang tidak perlu diproses. Teks atau keterangan ini umumnya
digunakan untuk memberikan penjelasan pada baris-baris kode VBA.
Underscore (_)
Karakter ini menandakan pindah baris penulisan untuk satu baris program tersebut. Jika
sebuah baris kode program cukup panjang, gunakan underscore untuk menandai bahwa
baris berikutnya merupakan kelanjutan dari baris program tersebut.
Titik dua (:)
Karakter ini digunakan untuk menandai akhir sebuah baris program. Titik dua (:) ini
merupakan kebalikan dari karakter underscore (_). Jika Underscore digunakan untuk
memisahkan 1 baris program menjadi beberapa baris, titik dua digunakan untuk menjadikan
beberapa baris program menjadi 1 baris saja. Artinya, dalam satu baris penulisan akan
terdapat beberapa baris program.
STATEMENT AKHIR PROCEDURE
Sebuah prosedur VBA selalu diakhiri atau ditutup dengan keyword "END" yang diikuti dengan
jenis prosedure. Contoh:"End Sub" atau "End Function".
End JenisProsedur
Saat anda mengaktifkan Sheet1 selain muncul pesan dari kode pada ThisWorkbook tadi
muncul pesan lain yang merupakan hasil dari kode pada modul Sheet1. Sedangkan pada
Sheet2 dan Sheet3 tidak berlaku hal yang sama.
Dari latihan ini, anda bisa belajar bahwa event procedure pada thisWorkbook berpengaruh pada
semua Sheet sedangkan event procedure pada sebuah sheet tidak berpengaruh pada Sheet lain.
Latihan 2
Masih pada file yang sama lakukan beberapa hal berikut:
1. Tambahkan 2 standart modul baru dengan klik Insert--Module.
2. Aktifkan Modul 1 (Double klik) kemudian tulis buatlah prosedure VBA berikut:
Public Sub latihanMacro1()
'Ini prosedur public dengan nama "latihanMacro1"
MsgBox "Ini prosedur public pada -Modul 1- dengan nama latihanMacro1-"
MsgBox "Belajar VBA by -Kelas Excel-"
End Sub
3. Jalankan sub prosedur tersebut.
4. Buatlah 2 prosedur baru dibawah prosedur latihanMacro1 tadi, kode VBA-nya sebagai
berikut:
Prosedur latihanMacro2:
Sub latihanMacro2()
'Ini prosedur dengan nama "latihanMacro2"
MsgBox _
"Ini prosedur pada -Modul 1- dengan nama -latihanMacro2-"
MsgBox "Belajar VBA by -Kelas Excel-"
End Sub
Prosedur latihanMacro3:
Private Sub latihanMacro3()
'Ini prosedur private _
dengan nama "macroUmum3"
MsgBox "Ini prosedur private dengan nama -latihanMacro3-": MsgBox "Belajar VBA by
-Kelas Excel-"
End Sub
5. Jalankan masing-masing sub prosedure tersebut secara bergantian.
Pada latihan di atas saya ingin menekankan bagaimana cara membuat sebuah prosedur sederhana
pada sebuah modul serta bagaimana menggunakan tanda baca petik tunggal ('), underscore(_) dan
titik dua(:).
Silahkan baca ulang penjelasannya pada bagian sebelumnya.
Latihan 3
Jika sudah bisa memhami maskud dari prosedur-prosedur di atas, sekarang kita lanjutkan dengan
latihan 3.
1. Masih pada file yang sama, buka standart Modul 2, kemudian buatlah sebuah sub
prosedure dengan nama latihanMacro4 dengan kode sebagai berikut:
Sub latihanMacro4()
'Memanggil prosedur latihanMacro1
latihanMacro1
End Sub
2. Jalankan prosedure tersebut.
Prosedure latihanmacro4 ini bermaksud memanggil atau menjalankan prosedur
latihanMacro1 dengan cara menuliskan nama prosedure yang akan dipanggil tadi. Saat
latihanMacro4 dijalankan maka prosedur ini akan memanggil dan menjalankan kode
program yang ada di latihan Macro1.
3. Selanjutnya kita buat 2 prosedur lain pada modul 2 dengan masing-masing kode sebagai
berikut:
Prosedur latihanMacro5:
Sub latihanMacro5()
'Memanggil prosedur latihanMacro2
latihanMacro2
End Sub
Prosedur latihanMacro6:
Sub latihanMacro6()
'Memanggil prosedur latihanMacro3
latihanMacro3
End Sub
Jika sudah silahkan coba jalankan kedua prosedure di atas secara bergantian. Apa yang terjadi?
Saat latihanMacro5 dijalankan prosedur ini memanggil untuk menjalankan prosedur latihanMacro2
sehingga yang muncul adalah kotak pesan seperti yang bisa andalihat saat menjalankan prosedur
latihanMacro2.
Saat latihanMacro6 dijalankan yang terjadi adalah error "Compile error: Sub or Functions not
Defined" seperti gambar dibawah ini:
1. Kenapa terjadi hal demikian? Ya tebakan anda benar, sebab deklarasi pada latihanMacro3
scopenya adalah private, sehingga prosedur tersebut hanya bisa dipanggil dari modul 1 dan
tidak dapat dipanggil dari modul 2.
Selain mencoba sedikit memahami tentang scope private dan public dari latihan ke-3 ini saya ingin
menyampaikan juga pada dasarnya sub prosedur pada sebuah modul standart scopenya adalah
public sehingga jika Anda tidak menuliskan keyword Public pada sebuah prosedur VBA didalam
sebuah modul standart, maka akan dianggap sebagai public (lihat latihanMacro1 dan
latihanMacro2) dan hanya dianggap private jika anda menyertakan keyword "Private" pada
prosedur tersebut (latihanMacro3).
Jika anda masih bingung dengan penjelasan pada halaman ini, sangat bisa saya maklumi karena
keterbatasan kemampuan saya untuk memilih kata-kata. Untuk itu jangan sungkan-sungkan untuk
bertanya melalui bagian komentar yang sudah tersedia.
Untuk melengkapi pembahasan kali ini silahkan download File latihan di bawah ini :
Sekian dulu pembahasan kita mengenai Module dan Procedure pada VBA Excel. Jika tutorial ini
bermanfaat silahkan juga untuk dibagikan sehingga kawan anda lainnya juga ikut mendapatkan
manfaatnya.
Terimas kasih, sampai jumpa pada seri panduan VBA Dasar berikutnya kita akan belajar tentang
Tipe Data pda VBA Excel.
Seri Panduan VBA Excel Dasar yang bisa anda pelajari:
1. Pengenalan VBA Excel
2. Visual Basic Editor (VBE)
3. Module dan Procedure Pada VBA Excel
4. Tipe Data Pada VBA Excel
5. Konstanta dan Variabel Pada VBA Excel
6. Sub Procedure Pada VBA Excel
7. Cara Menjalankan Sub Procedure VBA Excel
8. Function Procedure Pada VBA Excel
9. Cara Menggunakan Function Procedure VBA Excel
4. MENGENAL TIPE DATA PADA VBA EXCEL (DATA TYPE VBA) #04
4.65/5 - 928 VBA Excel Komentar
Panduan excel dasar mengenai tipe data atau jenis data pada VBA Excel meliputi datatype Byte,
Integer, Long, Single, Double, Currency, Decimal, String, Date, Boolean, Object dan tipe data
Variant yang digunakan saat melakukan deklarasi variable
Data Type VBA - Seri tutorial dasar VBA kali ini akan mengajak anda untuk belajar mengenal
tentang tipe data (datatype) pada pemrograman Visual Basic For Aplication (VBA) Excel.
Sebenarnya setelah membahas tentang prosedur VBA saya ingin melanjutkan pembahasan
mengenai variabel dan konstanta, namun karena pembahasan tentang Variable pada VBA tidak
akan pernah terlepas dengan data type, saya kira akan lebih baik jika kita berkenalan dulu dengan
tipe data (data type) pada VBA. Tanpa megenal data tipe akan sangat sulit sekali untuk untuk
melakukan menejemen Variable dan konstanta secara efektif dan efisien.
Toh pada dasarnya tujuan utama dari VBA adalah untuk memanipulasi data. Sehingga memiliki
pemahaman yang baik tentang data type akan sangat membantu anda untuk menguasai VBA Excel.
Benar?
DAFTAR ISI
Pengertian dan Fungsi Tipe Data VBA
Jenis/Tipe Data VBA Exel
Numeric Data Type VBA
1. Byte
2. Integer
3. Long
4. Single
5. Double
6. Currency
7. Decimal
Non-Numeric Data Type VBA
1. String
2. Date
3. Boolean
4. Object
5. Variant
Tips Memilih Tipe Data VBA yang Tepat
Secara umum Data tersimpan di memori komputer. Jika Anda memiliki pemahaman dasar tentang
komputer, saya yakin Anda sudah familiar dengan cara kerjanya.
Pada pembahasan VBA, Penyimpanan data di bagi dalam 2 jenis. Beberapa data di simpan dalam
bentuk bentuk object dan beberapa data lainnya disimpan dalam bentuk variabel.
Objek adalah apa yang dimanipulasi oleh Visual Basic for Applications. Contoh objek adalah
Workbook, Worksheet, rentang sel (range) dan sel pada excel. Sedangkan Variabel merupakan
sebuah nama tertentu sebagai lokasi penyimpanan data. Variabel umumnya digunakan untuk
mewakili nilai tertentu. Dengan kata lain, variabel merupakan wadah untuk sebuah nilai tertentu.
Variabel pada Visual Basic for Applications dibuat dengan melakukan sebuah deklarasi statement
tertentu dengan menentukan nama dan karakteristik dari setiap variabel tersebut. Salah satu
karakteristik yang bisa Anda tentukan adalah tipe data-nya.
Tipe data merupakan sebuah cara yang digunakan untuk menentukan dan mengelompokkan jenis
dari suatu data tersebut. Aktifitas ini biasa di sebut sebagai "deklarasi variabel". Tentang Variabel
akan kita bahas tersendiri pada panduan selanjutnya, kali ini kita akan fokus membahas tentang tipe
data dulu.
Dalam bahasa pemrograman terdapat banyak jenis-jenis tipe data yang bisa digunakan. Namun
setiap bahasa pemrograman mempunyai tipe data yang mungkin tidak ada di bahasa pemrograman
lain.
Alasan utama mengapa memahami tipe data VBA itu penting adalah untuk menentukan
karakteristik dari variabel yang Anda buat di VBA.
Mengapa demikian? sebab Tipe data VBA akan menentukan cara penyimpanan data di memori
komputer. Masing-masing tipe data ini memiliki alokasi nominal yang berbeda pada memori yang
artinya akan membutuhkan jumlah byte tertentu yang berbeda untuk setiap tipe data.
Semakin kecil jumlah byte yang digunakan maka eksekusi VBA akan semakin cepat dan sebaliknya
semakin banyak byte yang digunakan data Anda, semakin lambat aplikasi VBA Anda berjalan.
Nah saya kira Anda sudah cukup memahami kenapa mengetahui tipe data VBA ini menjadi penting
untuk dipelajari. Lalu apa saja tipe data pada VBA Excel?
Dengan menggunakan tipe data Long VBA, Anda bisa menyimpan angka antara -2.147.483.648
dan 2.147.483.647.
Jika angka ini belum cukup anda bisa menggunakan tipe data Double.
Tipe data VBA Decimal memberikan jumlah digit terbesar untuk mewakili nomor tertentu. Oleh
karena itu, tipe ini lebih sesuai untuk kasus di mana Anda melakukan perhitungan dengan jumlah
besar yang membutuhkan presisi dan tidak dapat menghindari kesalahan pembulatan.
Ketepatan tipe data Desimal, datang dengan biaya dalam bentuk kebutuhan memori yang besar.
Tipe data VBA Desimal membutuhkan 12 byte, yang lebih besar dari tipe data numerik lainnya.
Seperti yang dijelaskan oleh Microsoft, Anda tidak dapat mendeklarasikan tipe data Decimal secara
langsung. Sebenarnya, tipe Decimal merupakan sub tipe Variant. Karena itu, untuk menggunakan
Desimal, Anda harus fungsi konversi CDec.
TIPE DATA NON-NUMERIK (NON-NUMERIC DATA TYPES)
Yang termasuk kedalam tipe data ini adalah tipe data string atau teks, tipe data Date, tipe data
Boolean, tipe data Object dan tipe data Variant.
TABEL TIPE DATA NON-NUMERIK
TIPE DATA MEMORY NILAI
String(fixed length) Sesuai panjang string 1 sampai 65.400 karakter
String(variable length) Sesuai panjang string + 10 bytes 0 to 2 Milyar karakter
Date 8 bytes 1 January 100 sampai 31 Desember 9999
Boolean 2 bytes True atau False
Object 4 bytes Untuk setiap objek yang disematkan
Variant(numeric) 16 bytes Nilai apapun sebesar Double
Variant(text) Length+22 bytes Sama seperti variable-length string
String-fixed length
Variabel yang menggunakan tipe Fixed-length String dapat berisi antara 1 dan sekitar
64.000 karakter. Variabel String ini membutuhkan jumlah memori sejumlah yang
dibutuhkan oleh string atau teks itu sendiri.
2. String-variable length
Variabel yang menggunakan tipe Variable-length String dapat berisi apapun dari 0 sampai
sekitar 2 miliar karakter. Tipe ini membutuhkan 10 byte memori ditambah memori yang
dibutuhkan untuk string itu sendiri.
Inilah salah satu alasan kenapa pada halaman panduan VBA bagian pertama saya menyarankan
untuk menggunakan option explicit pada setiap awal modul yang anda buat. Yakni agar Anda
berlatih menentukan tipe data apa yang paling tepat digunakan untuk alasan efektifitas eksekusi
VBA yang anda buat.
Selain saran pemilihan data type diatas ada beberapa hal lain yang perlu anda perhatikan:
1. Jika nilai data yang akan disimpan melebihi batas datatype yang ditentukan atau malah
berbeda datatype-nya, maka akan menghasilkan error.
2. Penulisan angka atau number pada VBA selalu menggunakan format English atau
menggunakan karakter titik (.) sebagai tanda desimal
3. Penulisan date dalam VBA sebaiknya menggunakan format universal YYYY-MM-DDuntuk
tanggal dan HH:mm:ss. untuk waktu
4. VBA akan berusaha mengkonversi datatype yang diinputkan menjadi sesuai dengan yang
dideklarasikan
5. Untuk dapat menggunakan datatype Decimal, maka variabel atau prosedur jenis function
harus menggunakan datatype Variant yang diisi dengan menggunakan fungsi CDec seperti
yang sduah dijelaskan sebelumnya.
Sekian dulu pembahasan kita tentang Data Type VBA. Jika ada yang belum jelas silahkan
ditanyakan pada kolom komentar yang tersedia. Pada seri tutorial VBA Dasar berikutnya kita akan
belajar tentang Konstanta dan Variabel pada VBA Excel.
Jangan lupa jika anda menemukan manfaat dari panduan-panduan pada blog tutorial excel ini
silahkan share dan berkomentar agar manfaatnya dirasakan juga oleh kawan-kwan pengguna
excel lainnya.
Seri Panduan VBA Excel Dasar yang bisa anda pelajari:
1. Pengenalan VBA Excel
2. Visual Basic Editor (VBE)
3. Module dan Procedure Pada VBA Excel
4. Tipe Data Pada VBA Excel
5. Konstanta dan Variabel Pada VBA Excel
6. Sub Procedure Pada VBA Excel
7. Cara Menjalankan Sub Procedure VBA Excel
8. Function Procedure Pada VBA Excel
9. Cara Menggunakan Function Procedure VBA Excel
Selein itu Anda akan kami ajak juga untuk lebih memahami tentang Istilah Scope atau runga
lingkup VBA dan istilah lifetime VBA.
Baca-pelan-pelan dan jangan lupa siapkan dulu kopi dan cemilannya.
DAFTAR ISI
Konstanta Pada VBA Excel
1. Cara Mendeklarasikan Konstanta
2. Contoh Deklarasi Konstanta
Variabel Pada VBA Excel
1. Manfaat Mendeklarasikan Variabel VBA
2. Cara Mendeklarasikan Variabel VBA
3. Aturan Menamai Variabel VBA
4. Cara Memasukkan Nilai ke Dalam Variabel VBA
5. Keyword Dim, Static, Public dan Private Pada Deklarasi Variabel VBA
Menentukan Scope Variabel VBA
1. Scope Procedure-Level atau Local VBA
2. Scope Module-Level atau Private VBA
3. Scope Project-Level atau Public VBA
Memahami Lifetime VBA
*FILE LATIHAN YANG DIGUNAKAN PADA PEMBAHASAN BISA ANDA DOWNLOAD PADA
BAGIAN AKHIR.
Dari Panduan VBA Excel Dasar yang bisa anda pelajari:
4. KONSTANTA DAN VARIABEL PADA VBA EXCEL
KONSTANTA VBA
Keterangan:
Elemen Scope bisa anda isi dengan Public atau Private sesuai scope yang anda butuhkan.
Jika Elemen ini tidak anda sertakan maka VBA akan menganggap Konstanta dideklarasikan
sebagai scope Public.
CONST merupakan keyword yang menunjukkan bahwa anda sedang mendeklarasikan
konstanta pada module atau prosedure VBA yang sedang anda buat
Nama_Konstanta adalah nama yang ingin anda gunakan untuk konstanta dimaksud untuk
membedakan konstanta satu dengan yang lainnya.
DataType merupakan jenis atau tipe data yang ingin anda gunakan dalam konstanta tersebut
sebagaimana yang sudah dijelaskan pada tutorial sebelumnya.
Nilai_Konstanta adalah nilai yang ingin anda berikan untuk konstanta tersebut, tentunya
harus sesuai dengan tipe data yang Anda tentukan.
Untuk saat ini saya kira tidak perlu memperpanjang pembahasan mengenai Konstanta pada VBA.
Pada bagian selanjutnya Anda akan saya ajak untuk mengenal dan belajar lebih jauh mengenai
Variabel VBA.
Pembahasan mengenai tipe Data VBA bisa anda temukan disini:Mengenal Tipe Data Pada VBA
Excel
VARIABEL VBA
Variabel pada VBA Excel merupakan bagian yang saya anggap sangat penting untuk Anda kuasai.
Sebab.... sebab apa ya? pokoknya penting lah. Hahahaha. Silahkan anda definisikan sendiri
pentingnya mempelajari pengertian dan cara menggunakan Variabel VBA ini setelah anda selesai
membaca dan mempraktekkan tutorial dasar VBA ini.
Apa sih Variabel VBA itu?
Variabel adalah nama lokasi memori yang digunakan untuk menyimpan atau mewakili nilai
tertentu yang dapat diubah selama eksekusi kode VBA.
Pada dasarnya Variabel sama seperti konstanta yang memiliki nama dan tipe data tertentu, bedanya
saat kode berjalan nilai konstanta tidak dapat diubah sedangkan variabel nilainya dapat diubah
untuk memanipulasi data.
Jadi jika konstanta hanya mampu untuk dibaca atau diambil nilainya (Read), Variabel selain
mampu untuk diambil nilainya juga bisa di tulis atau diubah nilai yang tersimpan didalamnya (Read
and Write).
Dari pengertian di atas dapat kita sederhanakan bahwa variabel memiliki 3 karakteristik berikut:
1. Memiliki nama tertentu.
2. Marupakan lokasi penyimpanan nilai atau data di dalam memori komputer.
3. Digunakan oleh sebuah program.
Dari ketiga karakteristik utama dari variabel di atas saya kira dapat anda jadikan acuan tentang apa
yang perlu Anda pahami setelah selesai membaca panduan mengenai Variabel VBA pada bagian ini
supaya Anda mampu mendeklarasikan variabel dengan tepat pada saat menuliskan kode-kode
Macro VBA Excel, yakni:
1. Bagaimana Anda menentukan cara penyimpanan nilai atau data. Pembahasan mengenai hal
ini terkait erat tentang bagaimana Anda menentukan VBA datatype (Tipe data) yang anda
gunakan serta bagaimana cara mendefinisikan atau mendeklarasikan sebuah variabel.
2. Bagaimana Anda memberi nama variabel VBA.
3. Bagaimana Anda menentukan dimana sebuah Variabel dapat digunakan atau diakses.
Pembahasan hal ini terkait erat dengan Scope (Ruanglingkup) dan Lifetime of Variables
(Umur Variabel).
Sebelum membahas tentang Konstanta dan Variabel Pada VBA Excel ini, saya terlebih
dahulu memilih untuk membahas Tipe Data VBA pada artikel tutorial VBA Dasar
sebelumnya. Sehingga kali ini saya tidak perlu mengulangnya lagi.
Beberapa alasan atau manfaat lain kenapa Anda harus melakukan deklarasi variabel adalah sebagai
berikut:
1. Memungkinkan anda untuk menggunakan fitur AutoComplete untuk menghindari kesalahan
penulisan nama variabel saat melakukan pemanggilan atau bermaksud menggunakan
variabel tertentu.
2. Membuat VBA melakukan pemeriksaan error atau kesalahan tambahan. Misal anda
mendeklarasikan sebuah variabel sebagai integer karena bermaksud mengisi value atau nilai
variabel tersebut dengan sebuah angka, namun Anda mengisinya dengan sebuah teks tanpa
sengaja. Jika terjadi hal demikian maka VBA akan memberikan informasi kesalahan bahwa
anda memasukkan nilai yang tidak sesuai pada variabel tersebut.
3. Mendeklarasikan variabel akan meningkatkan Readability atau tingkat keterbacaan sebuah
kode. Hal ini menjadikan proses Debug menjadi lebih mudah dan mengurangi resiko
kesalahan atau error tertentu.
Inilah alasan kenapa Anda harus mengaktifkan opsi "Option Explicit" seperti yang sudah
disampaikan pada seri pertama tutorial VBA ini. Statemen Option Explicit yang Anda gunakan
pada setiap awal sebuah modul akan memaksa anda untuk selalu mendefinisikan atau melakukan
deklarasi Variabel.
Hal lain yang saya kira cukup bermanfaat adalah bahwa dengan menggunakan statemen Option
Explicit ini, Visual Basic Editor secara otomatis mengoreksi ejaan nama variabel VBA yang anda
buat.
Keterangan:
"Keyword" adalah salah satu dari statemen berikut: Dim, Public, Private atau Static.
"Nama_Variabel" adalah nama yang ingin Anda gunakan sebagai pengenal variabel.
"Tipe_Data" adalah referensi ke tipe data dari variabel. Meskipun Elemen ini opsional atau
boleh tidak digunakan, saya sarankan Anda untuk selalau menggunakannya, kecuali Anda
benar-benar bingung Tipe Data apa yang harus anda gunakan pada variable yang anda
deklarasikan.
Kode di atas bermaksud mendeklarasikan 2 buah Variabel dengan nama nomor_urut dan
nomor_kode. Variabel nomor_urut kita tentukan menggunakan tipe data Long, sedangkan
nomor_kode kita tentukan sebagai String atau teks.
Agar baris penulisan kode lebih ringkas, Anda dapat juga menggunakan 1 keyword Dim untuk
mendeklarasikan beberapa variabel sekaligus dengan memisahkan antar variabel mengunakan
koma(,).
Contohnya adlaah sebagai berikut:
Dim nomor_urut As Long, nomor_kode As String
Dulu (bahkan sampai sekarang juga sih) saya sering meringkas penulisan kode deklarasi variabel
semisal berikut:
Dim nomor_A, nomor_B As Integer
Dengan maksud mendeklarasikan vaiabel nomor_A dan nomor_B sebagai nilai Integer.
Perlu Anda ketahui bahwa pada penulisan statement deklarasi variable semacam ini, VBA hanya
menentukan Variabel nomor_B sebagai Integer, sedangkan untuk variabel nomor_A karena tipe data
tidak disebutkan maka akan dianggap sebagai Variant sebagai tipe data devault pada VBA.
Jadi, penulisan kode deklarasi yang tepat seharusnya adalah sebagai berikut:
Dim nomor_A As Integer, nomor_B As Integer
Aturan Menamai Variabel VBA
Pada dasarnya anda bebas menamai sebuah variabel. Namun akan lebih baik jika nama tersebut
sekaligus mencerminkan nilai atau isi dari variabel tersebut. Misalnya gunakan singkatan tipe data
kemudian disambung dengan Nama yang menggambarkan nilai variabel tersebut.
Berikut beberapa singkatan yang umum dipakai sebagai prefix atau awalan nama Variabel:
Setelah mendeklarasikan Variabel, bagaimana cara memasukkan nilai ke dalam variebel tersebut?
Jika Anda membaca tutorial ini secara urut dari seri pertama, saya yakin anda sudah faham bahwa
pada dasarnya tipe variabel itu ada 2 macam. Yakni variabel ber-datatype object dan non object.
Untuk masing-masing tipe ini cara memasukkan nilainya berbeda:
Variabel ber-datatype selain object caranya adalah dengan menuliskan nama variabel kemudian
diikuti tanda sama dengan (=) dan nilai dari variabel tersebut.
Nama_Variabel = Ekspresi_Nilai_Variabel
Contoh:
Dim nomor_urut As Long, nomor_kode As String
nomor_urut = 123
nomor_kode = "A123"
Untuk Variabel ber-datatype selain object caranya adalah dengan menggunakan keyword "Set"
diikuti nama variabel, lalu diikuti tanda sama dengan (=) dan nilai dari variabel tersebut.
Nah, mudah bukan? untuk sementara cukup ini dulu tentang bagaimana cara memasukkan
nilai ke dalam sebuah variabel. Contoh-contoh lainnya akan dijelaskan pada bagian-bagian
penjelasan lain. Yang perlu Anda catat, Tambahkan keyword/statement SET jika data pada
variabel tersebut adalah berupa object VBA.
Keyword Dim, Static, Public dan Private Pada Deklarasi Variabel VBA
Seperti yang sudah dijelaskan di atas, Statemen atau keyword yang bisa digunakan untuk
mendeklarasikan sebuah variabel adalah sebagai berikut, tentunya masing-masing memiliki tujuan
tertentu:
1. Dim
2. Static
3. Public
4. Private
Dari keempat keyword tersebut, Statement DIM adalah yang paling umum digunakan. Sedangkan
3 keyword berikutnya digunakan untuk mendeklarasikan variabel dengan karakteristik khusus yang
menyangkut ruang lingkup (scope) atau masa pakainya (lifetime).
Sebagai aturan umum ketika sebuah variabel dideklarasikan dengan keyword Dim, semua variabel
tingkat-prosedur direset ulang ketika prosedur yang relevan berakhir. Sedangkan Variabel static
tidak demikain (tidak direset/dibuang).
Adapun Statement Public dan Private lebih berpengaruh terhadap scoope atau ruang lingkup dari
sebuah variabel. Scoope disini maksudnya adalah bagian mana dari sebuah project VBA dapat
menggunakan atau mengakses variabel tersebut. Apakah hanya pada prosedur tertentu, semua
prosedur dalam sebuah module atau juga dapat digunakan oleh prosedur lain meskipun berbeda
module.
Tentang scope ini sudah sedikit saya singgung pada seri tutorial VBA Dasar sebelumnya, silahkan
dibaca terlebih dahulu jika Anda belum sempat membacanya:Gambaran Umum Scope.
Jika sudah anda baca, saya kira bagian ini akan lebih mudah dijelaskan dengan membuat sebuah file
latihan. Jadi silahkan buat sebuah file baru kemudian simpan dengan nama file "Kelas Excel-
Latihan VBA 3.xlsm" pada folder yang sudah kita siapkan sebelumnya. Jangan lupa pilih ekstensi
.xlsm yang mendukung format macro VBA Excel.
Seperti yang ditunjukkan oleh namanya, variabel tingkat prosedur atau variabel lokal hanya
dapat digunakan dalam prosedur di mana sebuah variable dideklarasikan. Hal ini berlaku untuk
prosedur jenis Sub atau Function.
Cara melakukan deklarasi variabel untuk scope level prosedur ini umumnya adalah tepat dibawah
deklarasi atau statement prosedur. Dengan cara semacam ini anda dapat menggunakan nama yang
sama untuk beberapa variabel pada prosedur yang berbeda.
File "Kelas Excel-Latihan VBA 3.xlsm" tadi sudah dibuat kan? Okey, selanjutnya silahkan dinikmati
kopi dan cemmilannya.
Berikutnya silahkan lakukan latihan berikut:
1. Pada file yang telah kita buat tadi buatlah sebuah module dengan nama "Module1".
2. Pada Module1 ini tuliskan kode VBA berikut ini:
Option Explicit
Sub Latihan_Lokal_Variabel1()
Dim int_Angka1 As Integer
Dim int_Angka2 As Integer
int_Angka1 = 5
int_Angka2 = int_Angka1 + 10
MsgBox "Nilai Variabel int_Angka1 adalah: " & int_Angka1 & Chr(10) & _
"Nilai Variabel int_Angka2 adalah: " & int_Angka2
End Sub
Sub Latihan_Lokal_Variabel2()
Dim int_Angka1 As Integer
Dim int_Angka2 As Integer
int_Angka1 = 10
int_Angka2 = int_Angka1 * 2
MsgBox "Nilai Variabel int_Angka1 adalah: " & int_Angka1 & Chr(10) & _
"Nilai Variabel int_Angka2 adalah: " & int_Angka2
End Sub
3. Jalankan masing-masing prosedur di atas.
Sedangkan prosedur kedua menampilkan kotak pesan yang berbeda sebagai berikut:
Hal ini menunjukkan bahwa masing-masing variabel berjalan secara lokal pada prosedure terkait
dan segera dihapus nilainya saat prosedur berakhir.
Selanjutnya silahkan tambahkan sebuah prosedure lain berikut ini pada Module1 dibawah kedua
prosedur tadi:
Sub Latihan_Lokal_Variabel3()
MsgBox "Nilai Variabel int_Angka1 adalah: " & int_Angka1 & Chr(10) & _
"Nilai Variabel int_Angka2 adalah: " & int_Angka2
End Sub
Selanjutnya silahkan hapus statement "Option Explicit" Pada bagian atas Module1, kemudian
jalankan masing-masing prosedure pada module tersebut secara bergantian.
Meskipun kode tidak error pada dasarnya, VBA mendeklarasikan int_Angka1 dan int_Angka2
secara Implicit. Yang berarti bahwa tipe data yang digunakan untuk kedua variabel pada prosedur
Latihan_Lokal_Variabel3 adalah Variant. Selain itu nilai kedua Variabel pada prosedur ini masih
kosong, sebab kita memng belum memasukkan nilai apapun pada kedua Variabel VBA ini.
Dari sini Anda sudah dapat mengambil pemahaman tentang Variabel dalam Scope Level Procedur
atau Local VBA kan? Intinya Sebuah Variabel yang hanya bisa digunakan pada Prosedur terkait
dan tidak bisa dipanggil untuk Prosedur lainnya.
Lalu bagaimana jika Anda menghendaki VBA dapat mengakses sebuah Variabel dari prosedure
lain?
Scope Module-Level atau Private VBA
Jika pada Scope level Prosedure sebuah Variabel hanya bisa digunakan oleh prosedur terkait, pada
variabel scope level-modul, sebuah Variabel tersedia juga untuk digunakan dalam prosedur lain asal
masih dalam modul yang sama di mana variabel VBA tersebut dideklarasikan.
Untuk lebih memahaminya silahkan buat sebuah module baru dengan nama "Module2" pada
file yang sama. Pada module tersebut tuliskan kode VBA berikut:
Option Explicit
Sub Latihan_LevelModule_Variabel1()
str_Teks = "Belajar VBA Excel Dasar"
int_Angka = 1439
Sub Latihan_LevelModule_Variabel3()
MsgBox "Latihan_LevelModule_Variabel3" & Chr(10) & Chr(10) & _
"Nilai Variabel str_Teks adalah: " & str_Teks & Chr(10) & _
"Nilai Variabel int_Angka adalah: " & int_Angka
End Sub
Jika sudah, selanjutnya silahkan jalankan masing-masing prosedure di atas secara bergantian
dengan urutan sebagai berikut. Sebelumnya tekan tombol reset pada menu VBE untuk memastikan
semua Variabel telah di reset ulang:
1. Latihan_LevelModule_Variabel3
Dari latihan ini anda bisa dapatkan bahwa dengan melakukan deklarasi Variabel pada awal baris
deklarasi atau sebelum mendeklarasikan prosedur, tepatnya dibawah statement "Option Explicit",
maka Variabel tersebut memliki scope level module.
Artinya Variabel VBA tersebut bisa dikenali oleh semua prosedur dalam module yang sama dan
tidak terjadi error seperti pada contoh latihan sebelumnya pada bagian Scope Procedure-Level
atau Local VBA.
Pada contoh deklarasi diatas, untuk mendapatkan scope level module selain mendeklarasikan
dengan keyword Dim Anda juga dapat mendeklarasikan Variabel tersebut dengan statement
Private. Sehingga kode:
Dim str_Teks As String
Dim int_Angka As Integer
Sekarang buat 1 Modul lagi dengan nama "Module3". Kemudian tuliskan kode Macro VBA
Excel berikut pad modul tersebut:
Option Explicit
Sub Latihan_LevelPublic_Variabel()
MsgBox "Latihan_LevelModule_Variabel3" & Chr(10) & Chr(10) & _
"Nilai Variabel str_Teks adalah: " & str_Teks & Chr(10) & _
"Nilai Variabel int_Angka adalah: " & int_Angka
End Sub
Variabel VBA yang deklarasinya memenuhi ketentuan di atas tersedia untuk prosedur apa pun,
bahkan dalam modul berbeda dalam Workbook Excel yang sama.
Oke sekarang kita praktekkan ya?
Silahkan buka Module2 kemudian ubah keyword Dim atau Private jika sudah Anda ubah pada
deklarasi variabel str_Teks dan int_Angka dengan statemen Public. sehingga pada module2
tersebut deklarasi kedua variabel tersebut menjadi:
Public str_Teks As String
Public int_Angka As Integer
Istilah "lifetime" atau terkadang disebut "life" saja mengacu pada berapa lama sebuah variabel
disimpan dalam memori komputer.
Pada dasarnya Scope sebuah variabel, selain berpengaruh terhadap dimana variabel tersebut dapat
di akses atau digunakan, namun juga mempengaruhi keadaan di mana variabel dihapus atau tidak
dari memori.
Apabila langkah-langkah yang anda lakukan benar maka kode yang Anda buat pada Module1 akan
terlihat seperti ini:
Option Explicit
int_Var1 = int_Var1 + 5
int_Var2 = int_Var2 + 5
MsgBox "Nilai Variabel int_Var1 adalah: " & int_Var1 & Chr(10) & _
"Nilai Variabel int_Var2 adalah: " & int_Var2
End Sub
Pada saat dijalankan kedua kali ternyata nilai Variabel int_Var1 tetap 5 sedangkan nilai int_Var2
menjadi 10 dan terus berubah bertambah 5 saat dijalankan ulang. Kenapa demikian?
Hal ini disebabkan Variabel int_Var2 kita deklarasikan sebagai Static, sehingga pada akhir
prosedure nilai 5 dari Variabel int_Var2 tetap tersimpan di dalam memori. Saat Anda menjalankan
prosedure tersebut untuk kedua kalinya maka nilai tersebut ditambahkan dengan angka 5 sesuai
nilai yang diberikan pada int_Var2 tersebut (int_Var2 = int_Var2 + 5).
Silahkan coba menjalankan prosedur TestVarabelStatic beberapa kali dan perhatikan nilai yang
dihasilkan.
Lalu bagaimana untuk mereset nilai Static tadi? Untuk contoh kasus ini gunakan tombol menu reset
pada VBE seperti yang sudah dijelaskan sebelumnya.
Dari contoh kasus sederhana di atas, saya yakin anda sudah mendapatkan gambaran tentang maksud
dari lifetime yang saya singgung di atas.
Istilah "lifetime" pada VBA mengacu pada berapa lama suatu variabel disimpan dalam memori
komputer."
Selain digunakan pada Variabel. Keyword atau statement Static bisa juga digunakan pada level
prosedur, hal ini akan menjadikan semua Variabel didalam prosedure tersebut memiliki lifetime
yang lebih lama atau tidak segera di hapus saat akhir prosedur.
Pada module4 di bawah akhir prosedure tadi tambahkan script atau kode VBA berikut:
Public Static Sub TestProsedureStatic()
Dim int_Var1 As Integer
Dim int_Var2 As Integer
int_Var1 = int_Var1 + 5
int_Var2 = int_Var2 + 5
MsgBox "Nilai Variabel int_Var1 adalah: " & int_Var1 & Chr(10) & _
"Nilai Variabel int_Var2 adalah: " & int_Var2
End Sub
Kemudian silahkan coba jalankan prosedure "TestProsedureStatic" ini beberapa kali. Apa yang
terjadi? Ternyata meskipun tidak kita deklarasikan sebagai Static, Variabel int_Var1 dan int_Var2
pada prosedur ini diperlakukan layaknya sebuah variabel static bukan?
Baiklah, pembahasan mengenai Konstanta dan Variabel VBA pada seri tutorial VBA ini saya kira
sudah cukup panjang dan melelahkan. Untuk itu saya sudahi dulu.
Untuk melengkapi pembahasan kali ini silahkan download File latihan di bawah ini :
Semoga bermanfaat dan menambah semangat belajar VBA Anda. Jangan lupa di Share jika ada
manfaatnya, sehingga kawan-kawan lain juga ikut merasakan manfaatnya. Sampai jumpa pada seri
berikutnya. Salam Kelas Excel.
Seri Panduan VBA Excel Dasar yang bisa anda pelajari:
1. Pengenalan VBA Excel
2. Visual Basic Editor (VBE)
3. Module dan Procedure Pada VBA Excel
4. Tipe Data Pada VBA Excel
5. Konstanta dan Variabel Pada VBA Excel
6. Sub Procedure Pada VBA Excel
7. Cara Menjalankan Sub Procedure VBA Excel
8. Function Procedure Pada VBA Excel
9. Cara Menggunakan Function Procedure VBA Excel
*FILE LATIHAN YANG DIGUNAKAN PADA PEMBAHASAN BISA ANDA DOWNLOAD PADA
BAGIAN AKHIR.
PENGERTIAN SUB PROCEDURE
Sub Procedure merupakan salah satu jenis procedure pada VBA. Istilah Sub pada jenis
procedure VBA ini merujuk pada istilah Subroutines yang secara umum bisa di artikan
sebagai sebuah set instruksi yang dirancang untuk melakukan operasi atau tindakan aksi
tertentu pada suatu program komputer.
Sub procedure pada VBA Excel adalah sekumpulan kode VBA yang ditandai dengan statement
pembuka Sub dan diakhiri dengan Statement End Sub. Sub procedure akan menjalankan suatu
aksi, tindakan atau tugas tertentu sesuai kode program yang diberikan diantara statement
Sub dan End Sub, namun tidak mengembalikan atau menghasilkan sebuah nilai tertentu
(return value/return result).
Return Value atau nilai akhir inilah perbedaan utama antara Jenis Sub Procedure dengan
Function Procedure pada VBA Excel. Function Procedure bisa mengembalikan atau
menghasilkan sebuah nilai tertentu sedangkan Sub Procedure tidak. Tentang Function
Procedure akan dibahas pada seri selanjutnya.
Jika sebuah sub procedure dijalankan maka kode-kode program di dalamnya akan
dijalankan dari awal sampai ditemukan statement End Sub/Exit Sub.
Setiap elemen Sub Procedure yang ada di dalam kurung siku "[...]" bersifat opsional, artinya boleh
digunakan dan boleh diabaikan atau tidak ditulis. Jika anda pernah melihat sebuah prosedur sub
pada sebuah modul VBA, mungkin pemulisannya menggunakan cara sederhana seperti ini:
Sub Nama_Prosedur ()
'Instruksi/Kode Program
'Instruksi/Kode Program
'Dst.
End Sub
Keterangan:
1. Sub : Menunjukkan jenis Prosedure
2. copyNilai : Menunjukkan nama prosedur.
3. Baris kode teks "Copy Nilai C2 ke A1" dan "Copy Nilai D6 ke A2" yang di awali dengan
tanda petik (') merupakan keterangan/komentar dan tidak berarti apa-apa.
4. Sheet1.Range("A1") = Sheet1.Range("C2") merupakan baris kode yang berisi perintah
untuk mengisi nilai Sel A1 pada Sheet1 dengan nilai Sel C2 pada Sheet1
5. Sheet1.Range("A2") = Sheet1.Range("D6") merupakan baris kode seperti sebelumnya
yang bisa juga diartikan perintah untuk mengcopy nilai sel D6 ke sel A2 pada Sheet1.
6. End Sub : Baris kode sebagai statemen penutup Sub Procedure yang menunjukkan akhir
dari prosedur copyNilai.
Selanjutnya akan coba dijelaskan masing-masing elemen penyusun sebuah Sub Procedure pada
VBA Excel.
Elemen [Private|Public|Friend]
Keyword Private, Public dan Friend mengatur tingkat akses atau scope dari prosedur terkait.
Private : Menyatakan bahwa Sub procedure hanya dapat diakses/dipanggil oleh procedure
di modul yang sama dimana procedure tersebut ditulis
Public : Menyatakan bahwa Sub procedure dapat diakses/dipanggil oleh setiap procedure
di semua modul.
Friend : Keyword ini digunakan pada Class module. Untuk saat ini kita abaikan dulu.
Ketiga keyword yang juga sering disebut sebagai access modifiers di atas bersifat opsional.
Jika pada pembuatan atau saat deklarasi sub procedure tidak anda gunakan salah satunya,
maka VBA Excel akan menggunakan keyword Default yakni Public. Artinya prosedur yang
anda buat dapat dipanggil dari semua modul yang ada.
Tentang Scope ini sudah banyak kita singgung pada seri sebelumnya, untuk lebih jelasnya
akan di contohkan pada bagian latihan dibawah.
Elemen [Static]
Keyword Static pada deklarasi prosedur menyatakan bahwa setiap variabel lokal pada sebuah Sub
procedure akan disimpan atau tidak dibuang dari memori. Jika keyword ini tidak anda gunakan
maka normalnya variabel akan dikosongkan setelah sebuah procedure yang dipanggil berakhir atau
selesai dijalankan.
Jika anda sudah membaca penduan sebelumnya tentang Konstanta dan Variabel VBA tentunya anda
sudah mendapatkan gambaran umum tentang Static Keyword di atas.
Elemen "Sub"
Teks atau element "Sub" ini wajib anda gunakan jika anda bermaksud membuat sebuah Sub
procedure. Elemen inilah yang menjadi perbedaan utama dalam penyusunan prosedur sub dengan
jenis lainnya.
Elemen "Nama_Prosedur"
Bagian ini menunjukkan nama dari prosedur yang anda buat dan harus anda gunakan.
Nama prosedur digunakan sebagai penanda untuk membedakan prosedure satu dengan yang lainnya
sekaligus menentukan bagaimana prosedur tersebut akan dipanggil oleh prosedur lainnya.
Meskipun tidak mempengaruhi apapun dari sebuah prosedur, namun sebaiknya gunakan nama yang
mewakili tujuan dari keseluruhan prosedur yang anda buat, sehingga saat sudah banyak prosedur
yang anda susun anda tidak kesulitan membedakan maksud atau tujuan dari setiap prosedur yang
ada.
Seperti yang sudah dijelaskan pada bagian sebelumnya, nama sebuah prosedur mengikuti beberapa
aturan berikut:
1. Karakter pertama harus berupa Letter Abjad (A-Z,a-z).
2. Karakter berikutnya dapat berupa huruf, angka atau karakter tanda baca tertentu (tidak
semua tanda baca bisa digunakan).
3. Tidak boleh memakai titik (.) Dan spasi ( ) juga tidak bisa memakai karakter berikut: #, $,%,
&, @, ^, * dan !.
4. Tidak ada perbedaan antara huruf besar dan huruf kecil.
5. Jumlah maksimum karakter yang bisa digunakan adalah 255.
Elemen [List_Argumen]
Bagian ini menunjukkan list atau daftar variabel yang mewakili argumen yang akan digunakan pada
prosedur Sub ketika dipanggil. Jika menggunakan lebih dari satu argumen atau variabel
penulisannya dipisahkan oleh koma.
Argumen dalam deklarasi prosedur ditulis seperti deklarasi variabel tanpa menyertakan
scope. Penulisan argumen tersebut bisa disertai statement lain seperti ByVal atau ByRef atau
Optional, sedangkan pada deklarasi variabel tidak ada.
Scope dari sebuah argumen bersifat lokal pada prosedur tersebut. Artinya, seakan-akan
setara dengan variabel yang dideklarasikan dengan Dim dalam prosedur tersebut. Jadi
argumen bisa menghasilkan sebuah variabel ber-scope lokal dalam prosedur yang bisa
menerima nilai dari luar prosedur.
Tentang Penggunaan List_Argument ini akan kami bahas pada seri panduan VBA
berikutnya. Untuk saat ini bisa diabaikan dulu.
Belajar VBA itu tidak afdhol jika tidak ada prakteknya. Betul?
Pada bagian ini kita akan belajar memahami beberapa istilah yang sudah dijelaskan di atas.
Sekaligus kita juga akan belajar bagimana menentukan scope sebuah Prosedur Sub VBA.
Sekarang silahkan membuat sebuah file berekstensi xslm kemudian simpan dengan nama "Kelas
Excel-Latihan VBA 4" pada folder yang sudah kita buat pada bagian pertama seri tutorial VBA
Dasar ini.
Pada file yang telah kita buat tadi buatlah sebuah module baru kemudian ubah nama modul baru
tadi dari "Module1" menjadi "SubProsedure1". Bagaimana caranya? Jika masih kesulitan untuk
melakukan aktifitas ini dilahkan baca seri sebelumnya.
Selanjutnya apa bila anda mengikuti seri panduan VBA Dasar ini dari awal, saat membuka modul
"SubProsedure1" secara otomatis pada bagian atas Module Window akan mucul teks/kode "Option
Explicit".
Dibawah kode ini buatlah 2 buah Prosedur Sub, masing-masing dengan nama Latihan11 dan
Latihan12 seperti dibawah ini:
Sub Latihan12()
MsgBox "Ini Prosedure Latihan12"
End Sub
Perbedaan utama dari kedua sub procedure di atas adalah adanya keyword "Public" pada prosedur
"Latihan11", sedangkan prosedur "Latihan12" tidak.
Sekarang silahkan coba jalankan kedua prosedure tadi. Jika langkah anda benar maka saat
dijalankan, masing-masing prosedur akan memunculkan sebuah message box/kotak pesan.
Untuk menjalankan prosedur posisikan cursor pada salah satu bagian prosedur kemudian tekan F5
atau pilih menu Run--Run Sub/Userform
Setelah berhasil menjalankan kedua prosedur Latihan11 dan Latihan12, selanjutnya silahkan buat
lagi 2 prosedur lain dibawahnya. Masing-masing dengan nama "Latihan13" dan "Latihan14" seperti
dibawah ini.
Sub Latihan13()
Call Latihan11
End Sub
Sub Latihan14()
Call Latihan12
End Sub
Jika sudah, silahkan jalankan kedua prosedur ini secara bergantian.
Saat dijalankan, prosedur "Latihan13" akan memanggil prosedur "Latihan11" dan memunculkan
kotak pesan berikut:
Sedangkan prosedur "Latihan14" akan memanggil prosedur "Latihan12" dan memunculkan pesan
berikut:
Salah satu cara memanggil prosedur dari prosedur lain adalah dengan menggunakan keyword
Call diikuti dengan nama prosedur yang dipanggil.
Msg Box merupakan salah satu perintah VBA yang digunakan untuk memunculkan kotak pesan
yang berisi teks tertentu.
Sampai pada tahap ini ternyata dengan menggunakan keyword Public atau tidak, tidak
mempengaruhi akses sebuah prosedur saat dipanggil dari module yang sama. Lalu bagaimana jika
dipanggil dari modul yang berbeda?
Sekarang silahkan membuat satu buah module lagi kemudian ubah namanya menjadi
"SubProsedure2". Jadi sekarang kita memiliki 2 buah modul. Pada Module pertama berisi 4
procedure, sedangkan pada Module VBA kedua masing kosong.
Selanjutnya, pada module ke-2 atau modul dengan nama "SubProsedure2" tadi buatlah dua Sub
Procedure seperti berikut:
Sub Latihan21()
Call Latihan11
End Sub
Sub Latihan22()
Call Latihan12
End Sub
Sub prosedure Latihan21 berisi kode yang memanggil prosedur Latihan11, sedangkan Sub
Procedure Latihan22 berisi kode untuk memanggil prosedur Latihan12.
Jika sudah anda buat, jalankan kedua prosedur Latihan21 dan Latihan22 pada module
SubProsedure2 secara bergantian.
Bagaimana hasilnya?
Ya ternyata kedua Sub Procedure Latihan11 dan Latihan12 bisa juga dipanggil dari modul lain yang
berbeda.
Selanjutnya tuliskan lagi script kode berikut untuk menambahkan sebuah prosedur sub pada modul
SubProsedure2 berikut:
Sub Latihan23()
Latihan11
Latihan12
End Sub
Jika sudah selesai membuat Sub Prosedure Latihan23 ini silahkan coba dijalankan.
Sekarang pada module SubProsedure1 terdapat 4 prosedur VBA dengan nama Latihan11,
Latihan12, Latihan13 dan Latihan14. Sedangkan pada module SubProsedure2 terdapat 3 prosedur
masing-masing dengan nama Latihan21, Latihan22, dan Latihan23.
Bagaimana? sudah capek? Jika belum kita lanjutkan latihan dan pembahasan tentang Sub Procedure
VBA Excel ini.
Pada modul VBA "SubProsedure1" tambahkan kode berikut untuk membuat 2 Sub Procedure lain:
Sub Latihan16()
Latihan15
End Sub
Prosedur Latihan15 berisi kode untuk memunculkan sebuah pesan, sedangkan pada prosedur
dengan nama Latihan16 berisi perintah untuk memanggil atau menjalankan prosedur "Latihan15".
Semoga cara saya menamai prosedur-prosedur di atas tidak membuat anda bingung. Jika iya saya
yakin anda hanya membaca saja tanpa praktek menuliskan kode-kode di atas tadi. hehehehe.
Secara bergantian saat kedua prosedur ini dijalankan maka semestinya akan memunculkan sebuah
kotak pesan seperti ini:
Sekarang kita pindah ke module "SubProsedure2" dan tambahkan Sub prosedur berikut di bawah
prosedur "Latihan23" yang sudah ada:
Sub Latihan24()
Latihan15
End Sub
Saat prosedur Latihan24 dijalankan untuk memanggil prosedur Latihan15 ternyata muncul pesan
error berikut:
Ya, hal ini disebabkan prosedur Latihan15 kita deklarasikan sebagai Private, sehingga tidak bisa di
panggil dari module lain.
Dari latihan ini dapat disimpulkan bahwa prosedur VBA yang dideklarasikan sebagai Private
memiliki scope level modul sehingga hanya bisa dipanggil oleh prosedur lain pada modul yang
sama dan tidak bisa dipanggil dari modul yang lain.
Untuk latihan sekarang silahkan membuat module baru lagi dan ubah namanya menjadi
"SubProsedure3"
Pada modul ini tuliskan kedua script VBA berikut:
Sub Latihan31()
Dim int_Variabel1 As Integer
int_Variabel1 = int_Variabel1 + 5
int_Variabel2 = int_Variabel2 + 5
Berikutnya silahkan jalankan kedua prosedur ini masing-masing 3x atau lebih. Kemudian
perhatikan perbedaannya.
Anda dapat membuat semua Sub prosedur VBA pada sebuah modul tertentu hanya dapat diakses
dari project VBA yang sama (tidak dari project VBA/file lain) dengan menambahkan statement
"Option Private Module" tanpa petik pada awal module.
Untuk melengkapi pembahasan kali ini silahkan download File latihan di bawah ini :
Sekian dulu pembahasan kita untuk VBA Sub Procedure, Pada seri berikutnya kita akan belajar
lebih detail tentang cara menjalankan Sub procedure serta membahas tentang Function Procedure
pada VBA Excel.
Jika ada pertanyaan silahkan sampaikan pada kolom komentar yang tersedia dan jangan lupa
bagikan laman ini agar semakin banyak kawan-kawan lain yang ikut mendapatkan manfaatnya.
Seri Panduan VBA Excel Dasar yang bisa anda pelajari:
1. Pengenalan VBA Excel
2. Visual Basic Editor (VBE)
3. Module dan Procedure Pada VBA Excel
4. Tipe Data Pada VBA Excel
5. Konstanta dan Variabel Pada VBA Excel
6. Sub Procedure Pada VBA Excel
7. Cara Menjalankan Sub Procedure VBA Excel
8. Function Procedure Pada VBA Excel
9. Cara Menggunakan Function Procedure VBA Excel
9 CARA MENJALANKAN ATAU MEMANGGIL SUB PROCEDURE VBA EXCEL #07
4.65/5 - 811 VBA Excel Komentar
Tutorial dasar VBA Excel mengenai cara menjalankan atau memanggil sub procedure pada VBA
Excel seperti memanggil procedure dari procedure lain, dengan tombol, shortcut, dan lain
sebagainya.
1. Pada seri panduan VBA Dasar sebelumnya kelas excel sudah membahas tentang langkah-
langkah membuat Sub Procedure pada VBA Excel. Pada seri ini kita akan belajar tentang
cara menjalankan atau memanggil Sub Procedure yang telah kita buat.
Hal ini menjadi penting sebab jika kita tidak tahu bagaimana cara menjalankan sebuah Sub
Procedure, maka kode macro excel yang telah kita buat untuk tujuan tertentu tentunya
menjadi tidak berguna.
Namun sebelum itu perlu anda ketahui bahwa dalam istilah pemrograman menjalankan
sebuah Sub Procedure biasa juga disebut dengan istilah Execute, Run atau Call yang kalau
saya bahasakan Indonesia kurang lebih artinya mengeksekusi, menjalankan atau memanggil.
Ketiga istilah ini dalam pembahasan kita mengacu pada maksud yang sama, yakni membuat
sebuah kode macro menjalankan aktifitas tertentu sesuai yang diperintahkan.
Pada VBA Excel ada beragam cara yang bisa anda lakukan untuk mengeksekusi,
menjalankan atau memanggil Sub Procedure. Pada tutorial VBA ini akan dijelaskan
setidaknya 9 alternatif cara yang bisa anda lakukan untuk menjalankan sebuah Prosedur
Sub.
DAFTAR ISI
1. Cara Menjalankan Sub Procedure VBA Dari Visual Basic Editor (VBE)
2. Cara Menjalankan Sub Procedure VBA Dari Kotak Dialog Macro
3. Cara Menjalankan Sub Procedure VBA Dengan Shortcut
4. Cara Memanggil Sub Procedure VBA Dari Prosedur Lain
5. Cara Memanggil Sub Procedure VBA Dari Ribbon Excel
6. Cara Memanggil Sub Procedure VBA Dari Quick Access Toolbar
7. Cara Mengaktifkan Sub Procedure VBA Saat Terjadi Event Tertentu
8. Cara Menjalankan Sub Procedure VBA Dari Immediate Window VBE
9. Cara Menjalankan Sub Procedure VBA Menggunakan Tombol Atau Objek Lainnya
CARA MENJALANKAN SUB PROCEDURE VBA DARI VISUAL BASIC EDITOR (VBE)
Cara pertama untuk menjalankan Prosedur Sub adalah melalui VBE atau Visual Basic Editor secara
langsung.
Meskipun bukan cara yang mungkin anda pilih saat sebuah macro atau kode VBA yang kompleks
sudah jadi, namun cara ini merupakan cara yang tercepat dan akan sering anda butuhkan saat dalam
proses penyusunan sub procedur. Menjalankan sub procedure dari VBE ini biasa digunakan untuk
melakukan debugging atau menguji apakah Prosedur Sub yang anda buat sudah sesuai keinginan
atau malah muncul error tertentu.
Langkah-langkahnya adalah sebagai berikut:
1. Pastikan VBE (Visual Basic Editor) dalam kondisi aktif. Jika belum anda bisa membukanya
dengan memilih menu Visual Basic yang berada pada TAB Developer -- Group Code atau
cukup menggunakan Shortcut Alt+F11.
2. Langkah selanjutnya silahkan posisikan cursor pada salah satu bagian dari Sub Procedure
yang ingin anda jalankan.
3. Jalankan Sub Procedure dengan memilih "Run Sub/UserForm" pada menu Run VBE atau
cukup dengan menekan tombol F5 pada keyboard..
Cukup mudah bukan? toh cara ini sudah beberapa kali kami sampaikan pada seri-seri sebelumnya.
Cara ini bisa anda pilih dengan catatan bahwa sub prcedure yang akan anda jalankan tidak memiliki
argument tertentu. Langkah-langkahnya adalah sebagai berikut:
1. Pada Tab developer pilih menu Macro yang ada di group Code untuk mengaktifkan kotak
dialog Macro. Alternatif lain anda bisa juga menggunakan Shortcut Alt+F8 untuk
mengaktifkan kotak dialog Macro ini.
2. Saat kotak dialog Macro sudah muncul, double klik pada nama prosedur yang ingin anda
panggil atau silahkan pilih nama prosedur yang ingin anda jalankan kemudian pilih menu
Run.
Sebagai catatan bahwa nama prosedur VBA yang muncul pada kotak dialog Macro ini
hanya Prosedur yang memiliki scoope public. Procedur yang memiliki scope private atau
berada dalam Addin Excel tidak akan muncul pada daftar Macro name. Mekipun demikian,
jika anda memilih cara ini anda bisa mengetikkan nama procedure pada bagian Macro name
kemudian klik Run.
Selain kombinasi Ctrl+Huruf anda bisa juga menggunakan Ctrl+Shift+Huruf untuk Shortcut
prosedur ini. Caranya saat mengetikkan huruf tekan juga tombol Shift. Misal jika anda ingin
menggunakan Ctrl+Shift+K sebagai shortcut, saat tekan tombol shift dan ketikkan huruf k pada
bagian shortcut key secara bersamaan.
Hati-hati dalam menentukan shortcut, karena shorcut ini akan menimpa shortcut default excel.
Misal jangan gunakan Ctrl+c, sebab mungkin anda akan sering membutuhkan aktifitas copy pada
excel. Untuk lebih amannya selalu gunakan Ctrl+Shift+Huruf jika anda memilih untuk
menggunakan cara ini untuk megaktifkan sebuah procedure.
CARA MEMANGGIL SUB PROCEDURE VBA DARI PROSEDUR LAIN
Kita juga dapat memanggil satu atau lebih sub procedure dari procedure lain.
Ada tiga metode yang bisa anda gunakan melalui cara ini.
Menggunakan Nama Sub Procedure
Cara yang paling lumrah digunakan adalah dengan langsung menuliskan baris kode yag berisi nama
prosedur yang ingin anda panggil.
Option Explicit
Sub isiA1()
' Tulis di Sheet1 Range A1
Sheet1.Range("A1") = "Belajar Menjalankan Sub Prosedur VBA Excel"
End Sub
Sub isiA2()
'Tulis di Sheet1 Range A2
Sheet1.Range("A2") = "Kelas Excel"
End Sub
Sub isiA1A2()
'Memanggil prosedur isiA1
isiA1
'Memanggil prosedur isiA2
isiA2
End Sub
Perhatikan prosedur ketiga atau prosedur dengan nama isiA1A2, dimana prosedur tersebut
memanggil 2 prosedur lain yakni prosedur isiA1 dan isiA2.
Menggunakan Call Statement
Metode ini mirip dengan sebelumnya hanya saja sebelum nama procedur tambahkan teks atau
statement "Call". Berikut contoh sederhananya.
Option Explicit
Sub isiA1()
' Tulis di Sheet1 Range A1
Sheet1.Range("A1") = "Belajar Memanggil Sub Prosedur VBA Excel"
End Sub
Sub isiA2()
'Tulis di Sheet1 Range A2
Sheet1.Range("A2") = "Kelas Excel"
End Sub
Sub isiA1A2()
'Memanggil prosedur isiA1
Call isiA1
'Memanggil prosedur isiA2
Call isiA2
End Sub
Meskipun cara sebelumnya lebih simpel, namun tidak sedikit juga yang lebih menyukai cara ini.
Sebab dengan menggunakan metode Call Statement ini saat membaca sebuah kode VBA yang
mungkin sudah beratus-ratus baris maka kita dapat dengan jelas melihat bahwa sebuah baris kode
sedang bermaksud memanggil prosedur lain.
Menggunakan Application.Run Method
Selain kedua metode sebelumnya anda bisa juga menggunakan Method Application.Run untuk
memanggil sebuah prosedur VBA Excel.
Contohnya sebagai berikut:
Option Explicit
Sub isiA1()
' Tulis di Sheet1 Range A1
Sheet1.Range("A1") = "Belajar VBA Excel"
End Sub
Sub isiA2()
'Tulis di Sheet1 Range A2
Sheet1.Range("A2") = "Kelas Excel"
End Sub
Sub isiA1A2()
'Memanggil prosedur isiA1
Application.Run "isiA1"
'Memanggil prosedur isiA2
Application.Run "isiA2"
End Sub
Lain waktu akan kita bahas tersendiri tentang metode terakhir dengan Application.Run Method ini.
Selain menu-menu excel standart, kita juga bisa menambahkan tombol panggil untuk menajalankan
sebuah prosedur VBA. Caranya adalah sebagai berikut:
1. Klik kanan bagian manapun pada ribbon excel kemudian pilih menu "Customize the
Ribbon".
2. Setelah opsi Customize the Ribbon muncul, buatlah sebuah custom group baru sebagai
wadah atau tempat meletakkan menu pemanggil prosedur.
3. Selanjutnya pada bagian dropdown "Choose commands from" dan pilih menu "Macros".
4. Kemudian anda tinggal memilih prosedur mana yang akan adan tambahkan pada ribbon
excel dengan klik menu Add dan OK untuk menyelesaikan
CARA MEMANGGIL SUB PROCEDURE VBA DARI QUICK ACCESS TOOLBAR
Selain pada bagian Ribbon Excel anda juga bisa menambhakan tombol pemanggil sub prosedur
VBA pada "Quick Access Toolbars (QAT)". Tentang QAT bisa anda pelajari lebih jauh pada
halaman berikut: Quick Access Toolbar Pada Microsoft Excel
Langkah-langkah untuk menambahkan menu atau tombol pemanggil prosedur pada QAT adalah
sebagai berikut:
1. Klik kanan pada Ribbon atau QAT, kemudian pilih menu "Customize Quick Access
Toolbar".
2. Setelah opsi Customize the Quick Access Toolbars muncul, pada bagian dropdown "Choose
commands from" dan pilih menu "Macros".
3. Selanjutnya anda tinggal memilih prosedur mana yang akan adan tambahkan pada ribbon
excel dengan klik menu Add dan OK untuk mengakhiri
CARA MENJALANKAN SUB PROCEDURE VBA SAAT TERJADI EVENT/AKTIFITAS
TERTENTU
Sub procedure pada VBA Excel juga bisa dipanggil atau dijalankan secara otomatis saat terjadi
sebuah event tertentu.
Event atau aktifitas disini misalnya saat kita membuka sebuah workbook, pada saat worksheet
tertentu aktif, ketika sebuah sel aktif dan lain sebagainya.
Pembahasan mengenai hal ini akan cukup panjang sehingga akan kita ulas pada halaman tersendiri
lain waktu.
Berikut contoh sebuah prosedur sub yang akan aktif dijalankan saat event tertentu.
Option Explicit
Untuk menjalankan sebuah prosedur sub melalui "Immediate Window" caranya cukup mudah. Ketik
saja nama prosedur yang akan dipanggil kemudian tekan ENTER.
Selain cara-cara di atas salah satu cara yang umum digunakan untuk memanggil serta menjalankan
sebuah sub procedur adalah dengan menggunakan tombol tertentu.
Tombol yang umum dipakai bisa anda buat dari menu Button pada form controls atau activeX
Controls. Anda bisa juga memanggil sub procedure dari objek-objek excel semisal shapes, text
boxes, clip art, SmartArt, WordArt, charts dan pictures.
Cara menggunakannya relatif mudah sebagai berikut:
1. Sisipkan button atau objek yang anda kehendaki.
2. Atur posisi, layout dan tampilan dari button atau objek excel tersebut.
3. Selanjutnya klik kanan pada tombol yang telah anda buat dan pilih menu "Assign Macro".
Dari 9 cara memanggil atau menjalankan sub procedure diatas, cara mana yang belum pernah anda
gunakan?
Terakhir saya yakin anda cukup bijak memiih dan menentukan cara mana yang anda anggap pas
dan sesuai kebutuhan. Jika masih ada yang kurang jelas jangan ragu untuk bertanya di kotak
komentar yang tersedia. Serta jangan ragu untuk share artikel tutorial VBA excel ini sehingga akan
lebih banyak teman-teman anda yang mendapatkan manfaatnya.
Berikut seri Panduan VBA Excel Dasar lainnya yang bisa anda pelajari:
1. Pengenalan VBA Excel
2. Visual Basic Editor (VBE)
3. Module dan Procedure Pada VBA Excel
4. Tipe Data Pada VBA Excel
5. Konstanta dan Variabel Pada VBA Excel
6. Sub Procedure Pada VBA Excel
7. Cara Menjalankan Sub Procedure VBA Excel
8. Function Procedure Pada VBA Excel
9. Cara Menggunakan Function Procedure VBA Excel
Dalam pembahasan Macro VBA Excel, Procedure adalah sebuah blok kode program yang berisi
baris-baris perintah tertentu di antara baris statement pembuka dan statement penutup prosedure.
Lebih jelasnya bisa anda baca pada seri berikut: Module dan Procedure VBA Excel.
Function procedure pada VBA Excel adalah salah satu jenis procedure yang ditandai dengan
statement pembuka "Function" dan diakhiri dengan Statement "End Function".
Dalam proses kerjanya function procedure sebenarnya sama dengan Sub Procedure yang sudah kita
bahas sebelumnya. Perbedaan utama dari kedua jenis procedure ini adalah bahwa Function
Prosedur dapat menghasilkan suatu nilai balik (return value) dari proses kerjanya yang tersimpan
didalam nama prosedurnya.
Cara kerja sebuah function procedure memang sangat mirip dengan fungsi-fungsi bawaan excel
seperti fungsi SUM, fungsi AVERAGE, fungsi MIN-MAX dan lain sebagainya, dimana kita bisa
memasukkan argumen-argumen tertentu ke dalam sebuah procedur function, kemudian fungsi
tersebut melakukan kalkulasi kemudian mengembalikan sebuah hasil dari kalkulasi tersebut.
Prosedur fungsi yang dideklarasikan dengan keyword Public dapat digunakan sebagai rumus excel
pada sebuah cell excel seperti fungsi bawaan Excel. Sebab itu prosedur function juga disebut
sebagai Custom Function serta User Defined Funtion (UDF).
Dan untuk alasan yang sama, di blog ini saya lebih cenderung menyebut default worksheet function
sebagai sebuah fungsi dan bukan rumus excel. Hal ini pernah saya singung pada pembahasan
tentang Pengenalan rumus dan fungsi pada Microsoft Excel.
Setiap elemen yang ada di dalam kurung siku "[...]" pada sintax prosedur function di atas bersifat
opsional, artinya boleh digunakan dan boleh diabaikan atau tidak digunakan.
Contoh sederhana sebuah function procedure adalah sebagai berikut:
Function luasPersegi(panjang As Integer) As Long
Dim luas As Long
Elemen [Private|Public|Friend][Static]
Karena sudah beberapa dijelaskan pada beberapa seri sebelumnya element ini tidak akan saya bahas
lagi. Untuk mempelajari maksudnya silahkan baca materi-materi seri macro VBA Excel
sebelumnya.
Elemen "Function"
Teks atau element "Function" ini wajib anda gunakan jika anda bermaksud membuat sebuah
Function procedure.
Elemen inilah membedakan penyusunan prosedur function dengan jenis procedure lainnya.
Elemen "Nama_Prosedur"
Bagian ini menunjukkan nama prosedur function yang anda buat dan harus anda gunakan. Nama
Fungsi inilah yang akan digunakan untuk memanggil atau digunakan pada worksheet. Jadi namailah
function procedure yang anda buat sebijak mungkin. Idealnya silahkan mencontoh bagiamana office
excel menamai fungsi-fungsi default yang sudah tersedia.
Seperti yang sudah dijelaskan pada pembahasan tentang procedure VBA, nama fungsi ini juga
mengikuti beberapa aturan berikut:
1. Karakter pertama harus berupa Letter Abjad (A-Z,a-z).
2. Karakter berikutnya dapat berupa huruf, angka atau karakter tanda baca tertentu (tidak
semua tanda baca bisa digunakan).
3. Tidak boleh memakai titik (.) Dan spasi ( ) juga tidak bisa memakai karakter berikut: #, $,%,
&, @, ^, * dan !.
4. Tidak ada perbedaan antara huruf besar dan huruf kecil.
5. Jumlah maksimum karakter yang bisa digunakan adalah 255.
Elemen [List_Argumen]
Bagian ini menunjukkan list atau daftar variabel yang mewakili argumen yang digunakan pada
prosedur function saat dipanggil atau digunakan.
Tentang List Argument Fungsi ini akan dibahas tersendiri di bagian bawah nanti.
Wah, kenapa tidak sekarang saja bang? Suka-suka saya donk ekekekeke....
Elemen "As [Return_Data_Type]"
Element ini di isi dengan tipe data VBA di awali dengan keyword "As" seperti saat
mendeklarasikan sebuah variabel.
Bagian ini menunjukkan tipe data yang akan dihasilkan oleh fungsi yang kita buat. Penulisannya
misalnya: As Integer, As Long, As String, dan lain sebagainya.
Jenis atau tipe data apa saja yang bisa digunakan? Silahkan baca pada seri berikut: Tipe Data Pada
VBA Excel
Pada contoh di atas baris kode "luasPersegi = luas" memberitahukan kepada fungsi luasPersegi
bahwa nilai yang harus dihasilkan olehnya adalah nilai dari variabel luas yang didapatkan dari hasil
perkalian argumen panjang * panjang.
Jadi pada kasus ini nama fungsi juga bekerja sebagai sebuah variabel.
Biasanya baris kode yang memberitahukan nilai yang harus dikembalikan oleh fungsi semacam ini
dituliskan pada bagian akhir fungsi sebelum "End Function" atau "Exit Function".
Sebagai catatan tambahan bahwa fungsi luasPersegi di atas bisa juga anda ringkas menjadi berikut:
Function luasPersegi(panjang As Integer) As Long
'Menghitung luas sekaligus Assign return value kepada fungsi luasPersegi
luasPersegi = panjang * panjang
End Function
Pastikan bahwa saat memberi tahukan nilai balik ini kepada sebuah fungsi, nilai yang diberikan
merupakan nilai akhir dari sebuah proses kalkulasi yang mungkin cukup panjang.
Penulisan argument di awali dengan nama argument kemudian diikuti dengan tipe datanya dan bisa
juga disertai keyword lain seperti ByVal atau ByRef serta statement Optional, sedangkan pada
deklarasi variabel tidak ada.
Jika terdapat lebih dari satu argument maka penulisannya dipisahkan dengan tanda koma(,).
Perhatikan contoh prosedur fungsi dengan nama DISKON berikut ini:
End Function
Function Procedure dengan nama DISKON diatas menggunakan 3 argumen yang masing-masing
adalah: jumlah, harga dan persen.
Argument Procedure
Saat sebuah procedure disertai argument, maka untuk memanggil prosedur tersebut juga harus
memberikan nilai input terhadap argument-argumentnya. Misal untuk menggunakan fungsi
DISKON di atas pada sebuah sel sebagai sebuah rumus excel anda dapat menuliskan rumus berikut
untuk menggunakannya:
=DISKON(5;10000;0,1)
Nilai angka 5 adalah jumlah, 10000 adalah harga dan 0,1 yang senilai dengan 10% adalah untuk
argumen persen.
Rumus ini berlaku jika anda menggunakan setting regional Indonesia yang menggunakan titik
koma(;) sebagai pemisah argument dan koma(,) sebagai pemisah desimal.
Apabila anda menggunakan setting region default yang biasanya masih Engish maka rumus pada
sel excel yang anda gunakan adalah sebagai berikut:
=DISKON(5,10000,0.1)
"Pada penulisan script VBA anda tetap harus menggunakan koma sebagai pemisah argument dan
titik(.) sebagai pemisah desimal meskipun menggunakan regional setting Indonesia.
Keyword Optional
Seperti pada fungsi-fungsi bawaan excel, anda bisa juga membuat argumen sebagai argumen
opsional yang saat dipanggil tidak harus diisi nilainya. Untuk mengatur argument opsional
tambahkan keyword "Optional" sebelum nama argument.
Argument opsional ini bisa juga anda tetapkan nilai defaultnya saat prosedur pemanggil tidak
menyertakannya. Pada contoh fungsi DISKON diatas, argument opsional adalah persen dengan
nilai default 0.01 (1%).
Optional persen As Double = 0.01
Nilai default 0.01 ini akan diabaikan jika saat memanggil fungsi DISKON anda menyertakan nilai
persennya seperti contoh sebelumnya. Jika tidak diisi maka nilai default inilah yang akan dipakai.
Pada sel excel anda dapat memanggil fungsi DISKON dengan cara seperti ini:
=DISKON(5;10000)
Rumus excel diatas akan menghasilkan angka 500 yang didapatkan dari perhitungan 5*10000 dan
dikalikan 0,01 atau 1% sebagai nilai default persen sebab anda tidak menyertakan nilai persen saat
pemanggilan fungsi DISKON.
Untuk membuat argument yang bersifat opsional awali penulisan argument dengan keyword
"Optional" yang diikuti dengan nama argument dan apabila diperlukan tetapkan nilai defaultnya
dengan cara menuliskan sama dengan (=) kemudinan diikuti dengan nilai default yang ingin anda
tetapkan.
Function DISKON(ByRef jumlah As Long, ByRef harga As Currency, Optional ByRef persen As
Double = 0.01)
Keyword ByVal dan ByRef pada dasarnya menunjukkan bagaimana sebuah nilai argument yang
diberikan oleh pemanggil akan digunakan oleh prosedur yang dipanggil. Apakah nilai argument
yang dilewatkan diambil nilainya (Value) saja atau diperlakukan sebagai sebuah referensi
(Reference).
Keyword ByRef: Mengirimkan lokasi memori suatu nilai yang diberikan kedalam sebuah
argumen. Argumen akan diisi dengan wujud data tersebut secara langsung, oleh karena itu
nilai variabel dapat diubah di dalam prosedur sub atau fungsi.
Keyword ByVal: Argumen akan diisi dengan salinan nilai data saja, dengan kata lain
ByVal mengirimkan suatu nilai yang diberikan kedalam sebuah argumen dan kemudian
argumen menyalin nilai tersebut untuk dimanfaatkan. Prosedur berargumen hanya akan
mengubah salinan nilai dan nilai asli tidak akan berubah sama sekali
Saya kehabisan kata-kata untuk menjelaskan tentang ByRef dan ByVal ini. Untuk lebih jelasnya
kita praktekkan saja.
Silahkan buat prosedur sub dan fungsi berikut pada sebuah Standart modul:
Option Explicit
Sub tesVolume()
Dim panjang As Long
panjang = 10
'Panggil fungsi VOLUMEKUBUS dan munculkan nilai hasil pada sebuah Mesage Box
MsgBox "Volume Kubus = " & VOLUMEKUBUS(panjang)
Jika sudah coba jalankan prosedur tesVolume. Hasilnya adalah 2 message box berikut:
Perhatikan nilai angka yang dimunculkan pada 2 message box tersebut. Message box pertama
merupakan hasil dari fungsi VOLUMEKUBUS, sedangkan yang kedua adalah nilai dari variabel
panjang.
Selanjutnya ubah keyword ByRef dengan ByVal pada argument panjang, kemudian jalankan lagi
prosedur tesVolume. Hasilnya adalah 2 message box berikut:
Perhatikan perbedaan pada message box ke-2 pada dua latihan di atas.
Ketika melewatkan argumen dengan referensi (ByRef), kita mengacu pada nilai asli. Nilai panjang
diubah dalam fungsi (panjang = panjang ^ 3). Kemudian variabel panjang ini dipanggil lagi melalui
message box ke-2(MsgBox panjang). Sebagai hasilnya, MsgBox kedua menampilkan nilai 1000.
Saat mengirimkan argumen berdasarkan nilai (ByVal), kita mengirimkan salinan nilai ke fungsi
(VOLUMEKUBUS(10)). Nilai panjang asli tidak berubah. Akibatnya, MsgBox kedua
menampilkan nilai 10 (nilai asli).
Anda tambah bingung? Jika anda menemukan halaman ini secara tidak sengaja saya sarankan
membaca beberapa seri panduan macro VBA Excel sebelumnya sehingga anda akan mendapatkan
konteks pemahaman yang lebih lengkap.
Seri Panduan VBA Excel Dasar yang bisa anda pelajari:
1. Pengenalan VBA Excel
2. Visual Basic Editor (VBE)
3. Module dan Procedure Pada VBA Excel
4. Tipe Data Pada VBA Excel
5. Konstanta dan Variabel Pada VBA Excel
6. Sub Procedure Pada VBA Excel
7. Cara Menjalankan Sub Procedure VBA Excel
8. Function Procedure Pada VBA Excel
9. Cara Menggunakan Function Procedure VBA Excel
Berikut file latihan yang saya gunakan pada tutorial kita kali ini.
Pada seri berikutnya kita akan belajar tentang bagaimana cara menggunakan atau
memanggil function procedure, namun sebelum itu silahkan share Panduan ini sehingga lebih
banyak lagi yang mendapatkan manfaatnya.
Setelah memahami bagaimana membuat function procedure pada VBA Excel, tentunya kita juga
harus tahu bagaimana cara menjalankan, memangggil atau mengeksekusi prosedur fungsi yang
telah dibuat.
Sebelumnya kita juga sudah mempelajari 9 cara menjalankan sub procedure, apakah untuk function
procedure caranya juga sama?
Sayangnya cara untuk menggunakan function procedure sedikit terbatas. Secara umum anda dapat
menggunakan 3 alternatif cara berikut untuk menjalankan atau memanggil sebuah function
procedure:
1. Memanggil funtion procedure dari procedure lain.
2. Menjalankan function procedure dari Immediate Window.
3. Menggunakan function procedure sebagai rumus excel.
Pada seri panduan Excel VBA Dasar kali ini kita akan membahas ketiga cara tersebut.
DAFTAR ISI
1. Cara Memanggil funtion procedure dari procedure lain
2. Cara Menjalankan function procedure dari Immediate Window
3. Cara Menggunakan function procedure sebagai rumus excel
Sebelum melanjutkan pembahasan tentang cara menggunakan prosedur fungsi pada VBA Excel ini,
silahkan anda buat dulu sebuah standart module baru kemudian buatlah sebuah function procedure
seperti berikut pada modul tersebut.
Umumnya untuk mendapatkan diskon ada kriteria tertentu yang harus terpenuhi, namun agar lebih
sederhana diskon penjulana disini kita hitung tanpa kriteria apapun.
Jika sudah dibuat mari kita lanjutkan pada pembahasan cara menggunakan function procedure
tersebut.
Cara pertama yang bisa kita gunakan untuk memanggil atau menjalankan function procedure adalah
dengan memanggilnya dari procedure lain.
Cara yang umum digunakan yakni dengan menuliskan baris kode yang berisi nama fungsi beserta
nilai-nilai argumennya. Misalnya berikut ini:
Sub munculkanDiskon()
MsgBox DISKON(10, 1500, 0.25)
End Sub
Jika anda menjalankan prosedure diatas hasilnya adalah kotak pesan berikut:
Angka 3750 pada kotak pesan tersebut didapatkan dari hasil kalkulasi oleh fungsi DISKON
(10*1500*25%).
Cara lain adalah dengan menggunakan Application.Run method seperti berikut ini:
Sub tampilkanDiskon()
MsgBox Application.Run("DISKON", 10, 1500, 0.25)
End Sub
Prosedure di atas akan menghasilkan kotak pesan yang sama seperti sebelumnya.
Pada VBE, argumen fungsi dipisahkan dengan koma(,), sedangkan pemisah desimal mengunakan
titik(.) meskipun menggunakan pengaturan regional Indonesia
CARA MENJALANKAN FUNCTION PROCEDURE DARI IMMEDIATE WINDOW
Cara lain untuk menjalankan sebuah function procedure adalah dengan memanggilnya dari
Immediate Window. Sebelum bisa menggunakannya tentunya anda harus menampilkan dulu
Immediate Window yang sudah kita bahas pada seri sebelumnya.
Metode ini biasanya digunakan untuk melakukan debug kode VBA, dengan kata lain untuk
memeriksa atau menguji apakah kode VBA yang kita buat sudah sesuai keinginan atau ada error
tertentu.
Cara yang biasa digunakan adalah dengan menggunakan printah "Print" kemudian diikuti nama
fungsi dan argumennya kemudian tekan Enter seperti berikut ini:
Anda juga bisa menggantikan perintah "Print" dengan tanda tanya (?) seperti ini:
Pada pembahasan tentang function procedure, disebutkan bahwa function procedure juga lazim
disebut sebagai Custom function dan juga sebagai User Defined Funtion (UDF).
Hal ini lebih di sebabkan karena function procedure bisa kita perlakukan layaknya fungsi bawaan
excel semisal fungsi SUM, AVERAGE, VLOOKUP, dan lain sebagainya.
Jadi kita juga bisa menggunakan function procedure sebagai sebuah rumus excel bahkan dapat juga
digunakan pada conditional formatting.
Cara menggunakannya juga seperti saat anda menggunakan fungsi default excel, yakni dengan
mengetikkan tanda sama dengan (=) kemudian diikuti dengan nama fungsi, lengkap dengan
argumen-argumentnya.
Berikut contohnya:
Cara di atas berlaku jika function procedure yang anda buat anda gunakan pada file yang sama.
Fungsi DISKON diatas, jika anda gunakan untuk file yang lain akan menghasilkan error #NAME?
seperti ini:
Jika bermaksud menggunakannya pada workbook yang berbeda maka ikut sertakan juga nama
file yang menyimpan function procedure DISKON seperti ini.
Jika tidak ingin menggunakan nama file anda dapat juga menetapkan referensi pada file/workbook
excel yang menyimpan fungsi DISKON tersebut yang bisa anda atur pada Menu Tools VBE.
Masih ada pertanyaan? Silahkan sampaikan pada kolom komentar yang tersedia.
Seri Panduan VBA Excel Dasar yang bisa anda pelajari:
1. Pengenalan VBA Excel
2. Visual Basic Editor (VBE)
3. Module dan Procedure Pada VBA Excel
4. Tipe Data Pada VBA Excel
5. Konstanta dan Variabel Pada VBA Excel
6. Sub Procedure Pada VBA Excel
7. Cara Menjalankan Sub Procedure VBA Excel
8. Function Procedure Pada VBA Excel
9. Cara Menggunakan Function Procedure VBA Excel