Belajar VBA - Dasar Bahasa: Variabel & Tipe Data
Episode 5 of 25

Belajar VBA - Dasar Bahasa: Variabel & Tipe Data

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

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

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.

Mendeklarasikan Variabel dengan Dim

Deklarasi variabel di VBA memakai kata kunci Dim (kependekan dari dimension):

Deklarasi variabel
Dim nama As String
Dim umur As Long
Dim nilai As Double
Dim aktif As Boolean
Dim tanggal As Date

Bacanya: "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 Data Inti

TipeIsiContoh
StringTeks"laporan"
LongBilangan bulat (−2,1 milyar s.d. +2,1 milyar)1000000
IntegerBilangan bulat kecil (−32.768 s.d. 32.767)42
DoubleBilangan desimal (pecahan)3.14159
BooleanBenar/salahTrue / False
DateTanggal & waktu#2026-08-16#
VariantApa saja (default)bebas
ObjectReferensi objekWorksheet, 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.

Membaca Nilai dari Excel ke Variabel

Bentuk paling umum di dunia nyata — mengambil isi sel dan menyimpannya:

Membaca dan menulis variabel
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 Sub

Debug.Print mengirim output ke Immediate window (Ctrl+G) — alat terbaik untuk memeriksa isi variabel tanpa menampilkan apa pun ke pengguna.

Option Explicit: Wajib Hukum

Di episode 3 kita mengaktifkan Require Variable Declaration. Efeknya: baris pertama setiap modul berisi:

Baris pertama modul
Option Explicit

Fungsinya 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: Prosedur, Modul, dan Global

Scope menentukan seberapa luas sebuah variabel bisa diakses.

Procedure-Level (Dim di dalam prosedur)

Scope prosedur
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 Sub

Variabel x hanya hidup selama ProsedurSatu berjalan. Ini perilaku terbaik secara default: setiap prosedur mandiri, tidak ada kejutan.

Module-Level (Private di atas prosedur)

Scope modul
Private counter As Long
 
Sub TambahSatu()
    counter = counter + 1
End Sub

Private membuat variabel terlihat oleh semua prosedur dalam modul yang sama, dan nilainya dipertahankan antarpemanggilan. Cocok untuk akumulator atau status internal modul.

Global (Public di module biasa)

Scope global
Public appNama As String

Public 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.

100%

Hierarki scope: semakin ke dalam, semakin aman. Aturan praktis: gunakan scope paling sempit yang masih berfungsi.

Const: Nilai yang Tidak Berubah

Untuk nilai tetap yang dipakai berulang — seperti nama sheet atau margin — pakai Const:

Konstanta
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 Sub

Keuntungan 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.

Variant: Fleksibel tapi Berat

Jika variabel dideklarasikan tanpa tipe (Dim x), ia berjenis Variant — bisa menampung apa pun. Fleksibel, tetapi:

  • Memori dan kecepatan lebih buruk dibanding tipe tetap.
  • Kesalahan tipe baru terdeteksi saat runtime, bukan kompilasi.
Variant vs tipe eksplisit
Dim x          ' Variant
Dim y As Long  ' eksplisit

Gunakan 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.

Common Pitfalls

KesalahanDampak
Menonaktifkan Option ExplicitTypo nama variabel menjadi error diam-diam
Pakai Integer untuk angka besarError Overflow
Dim di tengah prosedur antar perintahKode sulit dibaca; biasakan deklarasi di awal
Terlalu banyak Public variabelSaling ketergantungan tersembunyi antar modul
Angka desimal pakai Integer/LongNilai pecahan terpotong

Penutup

Pada episode 5 ini, kalian telah membangun fondasi bahasa VBA.

Inti yang harus dibawa pulang:

  • Deklarasikan variabel dengan Dim ... As Tipe; pilih tipe sesuai isinya.
  • Option Explicit mengubah error diam-diam menjadi error kompilasi yang jelas.
  • Scope berjenjang: 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 loopIf...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!

Belajar VBA - Dasar Bahasa: Variabel & Tipe Data | Belajar VBA