Scope Variabel (Public, Private, dan Static) pada VBA Excel: Memahami Ruang Lingkup Variabel

Pernah Mengalami Situasi Seperti Ini?

Ketika membuat sebuah variabel pada suatu prosedur.

Dim Total As Double

Kemudian, di prosedur lain Anda mencoba menggunakan variabel yang sama.

MsgBox Total

Namun, VBA menampilkan pesan kesalahan atau nilai variabel tidak sesuai harapan.

Mengapa hal itu bisa terjadi?

Jawabannya terletak pada scope variabel atau ruang lingkup variabel. Scope menentukan di mana sebuah variabel dapat digunakan dan berapa lama nilainya tetap tersimpan.

Memahami konsep ini sangat penting karena akan membantu Anda menulis program yang lebih terstruktur, aman, dan mudah dipelihara.


Apa Itu Scope Variabel?

Scope variabel adalah cakupan akses suatu variabel di dalam program.

Dengan kata lain, scope menentukan:

  • Prosedur mana yang dapat menggunakan variabel.

  • Module mana yang dapat mengakses variabel.

  • Kapan nilai variabel dibuat.

  • Kapan nilai variabel dihapus dari memori.

Dalam VBA, terdapat tiga jenis scope yang paling sering digunakan, yaitu:

  • Private

  • Public

  • Static


Bayangkan Sebuah Gedung Perkantoran

Agar lebih mudah dipahami, bayangkan sebuah gedung perkantoran.

πŸ—‚οΈ Private

Seperti lemari pribadi di ruang kerja.

Hanya pemilik ruang tersebut yang dapat membuka dan menggunakannya.

Prosedur lain tidak dapat mengakses isi lemari.


🏒 Public

Seperti ruang rapat bersama.

Semua karyawan dapat masuk dan menggunakan ruangan tersebut.

Demikian pula, variabel Public dapat diakses oleh seluruh module dalam project VBA.


πŸ“Œ Static

Seperti papan catatan di meja kerja.

Walaupun Anda keluar dari ruangan, catatan tersebut tetap berada di tempatnya.

Begitu juga dengan variabel Static, nilainya tetap tersimpan meskipun prosedur selesai dijalankan.


Mengenal Variabel Private

Variabel Private hanya dapat digunakan di dalam prosedur atau module tempat variabel tersebut dideklarasikan.

Contoh:

Sub Hitung()

    Dim Total As Double

    Total = 250000

    MsgBox Total

End Sub

Pada contoh di atas, variabel Total hanya dapat digunakan di dalam prosedur Hitung.

Jika prosedur lain mencoba mengaksesnya, VBA akan menghasilkan error.


Variabel Private pada Tingkat Module

Selain menggunakan Dim, Anda juga dapat mendeklarasikan variabel di bagian paling atas module menggunakan kata kunci Private.

Private Total As Double

Sub IsiData()

    Total = 500

End Sub

Sub Tampilkan()

    MsgBox Total

End Sub

Karena kedua prosedur berada pada module yang sama, keduanya dapat menggunakan variabel Total.

Namun, module lain tetap tidak dapat mengaksesnya.


Mengenal Variabel Public

Variabel Public dapat digunakan oleh seluruh module dalam satu project VBA.

Deklarasi dilakukan di bagian atas Standard Module.

Public NamaPerusahaan As String

Kemudian dapat digunakan pada berbagai prosedur.

Sub IsiData()

    NamaPerusahaan = "PT Maju Bersama"

End Sub
Sub Tampilkan()

    MsgBox NamaPerusahaan

End Sub

Walaupun kedua prosedur berada pada module yang berbeda, variabel tersebut tetap dapat diakses.


Mengenal Variabel Static

Secara normal, variabel lokal akan dihapus dari memori setelah prosedur selesai dijalankan.

Sebaliknya, variabel Static akan menyimpan nilai terakhirnya hingga workbook ditutup atau proyek VBA di-reset.

Contoh:

Sub HitungKlik()

    Static JumlahKlik As Integer

    JumlahKlik = JumlahKlik + 1

    MsgBox "Jumlah klik: " & JumlahKlik

End Sub

Hasil pemanggilan:

Pemanggilan pertama

Jumlah klik: 1

Pemanggilan kedua

Jumlah klik: 2

Pemanggilan ketiga

Jumlah klik: 3

Nilai variabel tidak kembali ke nol setiap prosedur selesai dijalankan.


Eksperimen Sederhana

Perhatikan dua contoh berikut.

Menggunakan Dim

Sub Tes()

    Dim Angka As Integer

    Angka = Angka + 1

    MsgBox Angka

End Sub

Setiap kali dijalankan, hasilnya selalu:

1

Menggunakan Static

Sub Tes()

    Static Angka As Integer

    Angka = Angka + 1

    MsgBox Angka

End Sub

Hasilnya:

1
2
3
4
...

Perbedaannya terletak pada kemampuan Static dalam mempertahankan nilai variabel.


Kapan Menggunakan Masing-Masing?

GunakanJika...
Private Variabel hanya diperlukan dalam module tertentu.
Public Variabel perlu digunakan oleh banyak module.
Static Nilai variabel harus tetap tersimpan setiap prosedur dipanggil.

Studi Kasus

Menyimpan Nama Pengguna

Saat workbook dibuka, pengguna memasukkan namanya sekali saja.

Public UserLogin As String

Kemudian nama tersebut dapat digunakan di berbagai prosedur.

Sub Sambutan()

    MsgBox "Selamat datang, " & UserLogin

End Sub

Tanpa variabel Public, Anda harus meminta pengguna mengisi nama berulang kali.


Studi Kasus

Menghitung Jumlah Klik Tombol

Sub Counter()

    Static Klik As Integer

    Klik = Klik + 1

    MsgBox Klik

End Sub

Program akan mengingat berapa kali tombol telah diklik.


Tips Praktis

βœ” Gunakan Dim untuk variabel yang hanya digunakan dalam satu prosedur.

βœ” Gunakan Private untuk data yang digunakan oleh beberapa prosedur dalam satu module.

βœ” Gunakan Public jika data perlu dibagikan ke seluruh project VBA.

βœ” Gunakan Static hanya jika nilai variabel memang perlu dipertahankan.

βœ” Hindari penggunaan Public secara berlebihan karena dapat membuat program sulit dilacak dan meningkatkan risiko perubahan data yang tidak disengaja.


Kesalahan yang Sering Terjadi

1. Terlalu Banyak Variabel Public

Semua data dibuat Public, padahal hanya digunakan dalam satu prosedur.

Akibatnya, kode menjadi sulit dipelihara.


2. Menggunakan Static Tanpa Disadari

Program menghasilkan nilai yang terus bertambah, padahal seharusnya dimulai dari nol.

Penyebabnya adalah variabel dideklarasikan sebagai Static.


3. Mengira Dim Berlaku untuk Semua Module

Variabel yang dibuat dengan Dim di dalam prosedur hanya berlaku pada prosedur tersebut.

Variabel tersebut tidak dapat digunakan oleh prosedur lain.


Ringkasan Cepat

JenisDapat DiaksesNilai Disimpan
Dim Hanya dalam prosedur Tidak
Private Dalam satu module Ya, selama project aktif
Public Semua module Ya, selama project aktif
Static Hanya dalam prosedur Ya, antar pemanggilan prosedur

Kesimpulan

Pemahaman tentang scope variabel sangat penting dalam pengembangan aplikasi VBA Excel. Dengan memilih jenis variabel yang tepatβ€”Private, Public, atau Staticβ€”Anda dapat mengatur akses data dengan lebih baik, menghindari konflik antarprosedur, serta membuat kode yang lebih aman, rapi, dan mudah dipelihara.


Tantangan Praktik

Cobalah membuat tiga prosedur berikut.

  1. Gunakan variabel Private untuk menyimpan total penjualan dalam satu module.

  2. Gunakan variabel Public untuk menyimpan nama perusahaan yang dapat diakses dari beberapa module.

  3. Gunakan variabel Static untuk menghitung berapa kali sebuah tombol dijalankan.

Bandingkan perilaku masing-masing variabel dan amati perbedaannya.

Hubungi Kami

Kantor Berkreasi
Alamat :
Pens Sky Venture - Sukolilo Surabaya
Karangrejo Tmur 17 Surabaya

Email : kantor.berkreasi@gmail.com
WA : wa.me/6287761589881  
(Support  Mbak Ana)

Tim Pengembang

Dr. Rojabi Azharghany, M.Si, S.Sos
Dr. H. Agus Sulthoni Imami, S.Psi. M.Pd.I.
Ali Ishaq, M.Pd.
Didik Rahwiniyanto, S.Si., M.Pd.
Mujiburrohman, M.Pd.
Mohammad Zikky, S.ST, M.T
Amien sawedi, S.Pd.
Didik P Wicaksono, M.Pd.