Apa Itu Enum?
Enum adalah fitur VBA yang digunakan untuk mengelompokkan beberapa konstanta yang saling berkaitan ke dalam satu nama.
Dengan Enum, setiap anggota memiliki nilai numerik yang dapat digunakan di dalam program.
Sintaks dasarnya:
Enum NamaEnum
Anggota1
Anggota2
Anggota3
End Enum
Secara otomatis VBA akan memberikan nilai:
Anggota1 = 0
Anggota2 = 1
Anggota3 = 2
Contoh Enum Sederhana
Enum StatusPesanan
Diproses
Dikirim
Selesai
End Enum
Kemudian digunakan seperti berikut.
Sub Contoh()
Dim Status As StatusPesanan
Status = Dikirim
MsgBox Status
End Sub
Output:
1
Karena Dikirim memiliki nilai 1.
Memberikan Nilai Sendiri
Nilai anggota Enum dapat ditentukan secara manual.
Enum LevelUser
Admin = 10
Supervisor = 20
Staff = 30
End Enum
Sekarang setiap anggota memiliki nilai yang Anda tentukan sendiri.
Menggunakan Enum pada Procedure
Enum JenisKelamin
LakiLaki
Perempuan
End Enum
Sub Contoh()
Dim JK As JenisKelamin
JK = Perempuan
End Sub
Dengan cara ini, VBA hanya menerima nilai yang berasal dari Enum tersebut.
Studi Kasus
Misalkan sebuah aplikasi memiliki tiga level hak akses.
Enum HakAkses
Administrator
Operator
Tamu
End Enum
Kemudian digunakan pada prosedur.
Sub Login(UserLevel As HakAkses)
If UserLevel = Administrator Then
MsgBox "Akses penuh."
ElseIf UserLevel = Operator Then
MsgBox "Akses terbatas."
Else
MsgBox "Hanya dapat melihat data."
End If
End Sub
Pemanggilan:
Login Administrator
Kode menjadi jauh lebih mudah dipahami dibanding menggunakan angka seperti:
Login 0
Enum vs Const
Banyak pemula bertanya, kapan menggunakan Const dan kapan menggunakan Enum?
Perbedaannya adalah sebagai berikut.
Const | Enum |
|---|---|
| Untuk satu nilai tetap | Untuk sekumpulan nilai yang saling berkaitan |
| Berdiri sendiri | Dikelompokkan dalam satu tipe |
| Cocok untuk tarif, batas, atau konfigurasi | Cocok untuk status, kategori, level, atau pilihan |
Enum vs Integer
Perhatikan dua contoh berikut.
Tanpa Enum.
Dim Status As Integer
Status = 2
Sulit mengetahui arti angka 2.
Menggunakan Enum.
Dim Status As StatusPesanan
Status = Selesai
Kode langsung menjelaskan maksudnya tanpa perlu melihat dokumentasi tambahan.
Menggunakan Enum Bersama Select Case
Enum sangat cocok dipadukan dengan Select Case.
Enum HariKerja
Senin
Selasa
Rabu
End Enum
Sub Jadwal(Hari As HariKerja)
Select Case Hari
Case Senin
MsgBox "Rapat"
Case Selasa
MsgBox "Presentasi"
Case Rabu
MsgBox "Evaluasi"
End Select
End Sub
Kesalahan yang Sering Terjadi
Menggunakan Enum untuk Nilai yang Tidak Berkaitan
Kurang tepat.
Enum Data
Nama
Pajak
Berat
Diskon
End Enum
Setiap anggota sebaiknya mewakili konsep yang saling berkaitan.
Menganggap Enum Menyimpan Teks
Anggota Enum sebenarnya menyimpan nilai numerik, bukan teks.
Misalnya:
Administrator
bukan berarti menyimpan kata Administrator, tetapi nilai numerik yang terkait dengannya.
Menggunakan Angka Langsung
Kurang baik.
Status = 1
Lebih baik.
Status = Dikirim
Kode menjadi lebih mudah dibaca dan dipahami.
Tips Praktis
💡 Gunakan Enum untuk sekumpulan pilihan yang saling berkaitan.
💡 Berikan nama Enum yang menggambarkan isi anggotanya.
💡 Hindari penggunaan angka secara langsung (magic numbers) jika sudah memiliki Enum.
💡 Gunakan Enum bersama Select Case agar logika program lebih jelas.
💡 Jika hanya membutuhkan satu nilai tetap, gunakan Const daripada Enum.
Ringkasan
| Konsep | Fungsi |
|---|---|
Enum |
Mengelompokkan sekumpulan konstanta yang saling berkaitan |
Anggota Enum |
Memiliki nilai numerik |
| Nilai Default | Dimulai dari 0 dan bertambah 1 |
| Nilai Manual | Dapat ditentukan sendiri sesuai kebutuhan |
Kesimpulan
Enum membantu membuat kode VBA lebih terstruktur dengan mengelompokkan sekumpulan konstanta yang saling berkaitan ke dalam satu tipe data. Dibandingkan menggunakan angka secara langsung atau banyak konstanta terpisah, Enum membuat kode lebih mudah dibaca, mengurangi kesalahan, serta memudahkan proses pengembangan dan pemeliharaan aplikasi VBA yang lebih besar.
Yuk, Praktik!
Latihan 1
Buat Enum bernama StatusPembayaran yang berisi anggota BelumBayar, Lunas, dan Dibatalkan, kemudian gunakan pada sebuah prosedur.
Latihan 2
Buat Enum bernama Prioritas dengan nilai Rendah = 1, Sedang = 2, dan Tinggi = 3. Tampilkan nilai setiap anggota menggunakan MsgBox.
Latihan 3
Gunakan Enum bersama Select Case untuk menampilkan pesan yang berbeda berdasarkan level pengguna (Admin, Operator, dan Guest).
