Fondasi bahasa VBA: mendeklarasikan variabel dengan Dim, memilih tipe data yang tepat seperti String Long Boolean Double Date dan Variant, memahami scope prosedur modul dan global, memakai Const, serta alasan Option Explicit wajib diaktifkan

Setelah di episode 3 dan 4 kalian menulis macro yang langsung bekerja, saatnya memperkuat fondasi. Macro yang tumbuh semakin besar akan penuh dengan nilai yang perlu disimpan, dihitung, dan dibandingkan — itulah fungsi variabel dan tipe data. Episode ini adalah fondasi bahasa VBA yang menentukan kualitas semua kode berikutnya.
Mengapa fondasi ini penting? Karena sebagian besar bug VBA yang paling menyakitkan lahir dari salah urus variabel: salah ketik nama, tipe data yang salah, atau variabel yang "bocor" ke prosedur lain. Dengan memahami variabel dan scope, kalian menutup pintu ke kelas bug tersebut sejak awal.
Deklarasi variabel di VBA memakai kata kunci Dim (kependekan dari dimension):
Dim nama As String
Dim umur As Long
Dim nilai As Double
Dim aktif As Boolean
Dim tanggal As DateBacanya: "siapkan kotak penyimpanan bernama nama yang hanya boleh diisi teks". Jika kalian mengisi nama = 42, VBA otomatis mengubahnya menjadi teks "42" — dan di sini Option Explicit berperan (dibahas sebentar lagi).
| Tipe | Isi | Contoh |
|---|---|---|
String | Teks | "laporan" |
Long | Bilangan bulat (−2,1 milyar s.d. +2,1 milyar) | 1000000 |
Integer | Bilangan bulat kecil (−32.768 s.d. 32.767) | 42 |
Double | Bilangan desimal (pecahan) | 3.14159 |
Boolean | Benar/salah | True / False |
Date | Tanggal & waktu | #2026-08-16# |
Variant | Apa saja (default) | bebas |
Object | Referensi objek | Worksheet, Range |
Tip
Untuk bilangan bulat, biasakan Long, bukan Integer. Alasan historis: Integer adalah 16-bit dan saat dihitung VBA diam-diam mengubahnya ke Long, sehingga sering muncul error Overflow yang membingungkan. Long menghindari jebakan ini dan lebih cepat.
Bentuk paling umum di dunia nyata — mengambil isi sel dan menyimpannya:
Sub BacaTulis()
Dim jumlah As Long
Dim label As String
jumlah = Range("B2").Value
label = "Total penjualan"
Range("D2").Value = label & ": " & jumlah
Debug.Print label, jumlah
End SubDebug.Print mengirim output ke Immediate window (Ctrl+G) — alat terbaik untuk memeriksa isi variabel tanpa menampilkan apa pun ke pengguna.
Di episode 3 kita mengaktifkan Require Variable Declaration. Efeknya: baris pertama setiap modul berisi:
Option ExplicitFungsinya satu: melarang variabel tanpa deklarasi. Tanpa Option Explicit, kalian bisa menulis jumla = 10 lalu membaca jumlah = jumla + 1 — dan VBA diam-diam membuat jumlah bernilai 0 karena jumla berbeda dengan jumlah. Error diam-diam semacam ini menghabiskan waktu berjam-jam.
Dengan Option Explicit, kesalahan ketik langsung memunculkan error Variable not defined saat kompilasi — cepat dan jelas.
Scope menentukan seberapa luas sebuah variabel bisa diakses.
Sub ProsedurSatu()
Dim x As Long
x = 10
End Sub
Sub ProsedurDua()
Dim y As Long
' y = x <- error! x tidak terlihat di sini
End SubVariabel x hanya hidup selama ProsedurSatu berjalan. Ini perilaku terbaik secara default: setiap prosedur mandiri, tidak ada kejutan.
Private counter As Long
Sub TambahSatu()
counter = counter + 1
End SubPrivate membuat variabel terlihat oleh semua prosedur dalam modul yang sama, dan nilainya dipertahankan antarpemanggilan. Cocok untuk akumulator atau status internal modul.
Public appNama As StringPublic membuat variabel bisa diakses dari semua modul di proyek. Praktis untuk data bersama, tetapi kalau dipakai berlebihan, melahirkan kode yang sulit dilacak. Gunakan dengan disiplin.
Hierarki scope: semakin ke dalam, semakin aman. Aturan praktis: gunakan scope paling sempit yang masih berfungsi.
Untuk nilai tetap yang dipakai berulang — seperti nama sheet atau margin — pakai Const:
Const SHEET_DATA As String = "Data"
Const TAX_RATE As Double = 0.11
Const VERSI As String = "1.0"
Sub IsiLaporan()
ThisWorkbook.Sheets(SHEET_DATA).Range("B2").Value = TAX_RATE
End SubKeuntungan Const: nilai diketik sekali di satu tempat. Saat pajak naik menjadi 0.12, kalian ubah satu baris — bukan menyisir puluhan prosedur mencari angka 0.11.
Jika variabel dideklarasikan tanpa tipe (Dim x), ia berjenis Variant — bisa menampung apa pun. Fleksibel, tetapi:
Dim x ' Variant
Dim y As Long ' eksplisitGunakan Variant hanya saat dibutuhkan — misalnya menampung hasil fungsi yang berubah tipe — dan beri tipe eksplisit di tempat lain. Di episode 10, penggunaan tipe eksplisit akan berdampak besar pada performa.
| Kesalahan | Dampak |
|---|---|
Menonaktifkan Option Explicit | Typo nama variabel menjadi error diam-diam |
Pakai Integer untuk angka besar | Error Overflow |
Dim di tengah prosedur antar perintah | Kode sulit dibaca; biasakan deklarasi di awal |
Terlalu banyak Public variabel | Saling ketergantungan tersembunyi antar modul |
Angka desimal pakai Integer/Long | Nilai pecahan terpotong |
Pada episode 5 ini, kalian telah membangun fondasi bahasa VBA.
Inti yang harus dibawa pulang:
Dim ... As Tipe; pilih tipe sesuai isinya.Option Explicit mengubah error diam-diam menjadi error kompilasi yang jelas.Dim (prosedur) → Private (modul) → Public (global); pakai yang paling sempit.Const memusatkan nilai tetap agar mudah diubah satu tempat.Variant fleksibel tapi mahal; tipe eksplisit lebih cepat dan lebih aman.Di episode 6 selanjutnya kita akan mengolah variabel itu dengan operator, kondisi, dan loop — If...ElseIf...Else, Select Case, For...Next, For Each, dan Do...Loop — peralatan yang mengubah macro statis menjadi program yang mengambil keputusan dan mengulang tugas. Sampai jumpa di episode 6!