Select Case di VBA Excel, Solusi untuk Banyak Percabangan

If...Then merupakan struktur percabangan yang paling sering digunakan di VBA Excel. Selama kondisi yang diperiksa hanya satu atau dua, penulisannya masih cukup sederhana.

Namun, bagaimana jika sebuah variabel memiliki banyak kemungkinan nilai?

Misalnya:

  • menentukan nilai huruf berdasarkan skor;

  • menentukan nama bulan berdasarkan angka;

  • menampilkan kategori pelanggan;

  • memilih tindakan berdasarkan kode menu.

Jika semua kondisi ditulis menggunakan If...ElseIf, kode akan menjadi semakin panjang dan sulit dibaca.

Untuk kondisi seperti ini, VBA menyediakan struktur Select Case.


Apa Itu Select Case?

Select Case adalah struktur percabangan yang digunakan untuk memilih satu dari beberapa kemungkinan kondisi berdasarkan sebuah nilai.

Dengan Select Case, Anda cukup menentukan nilai yang akan diperiksa satu kali, kemudian VBA akan menjalankan blok kode yang sesuai.


Sintaks Dasar

Sintaks umum Select Case adalah:

Select Case Ekspresi

    Case Nilai1

        'Kode

    Case Nilai2

        'Kode

    Case Else

        'Kode

End Select

Keterangan:

  • Ekspresi → nilai yang akan diperiksa.

  • Case → nilai yang akan dibandingkan.

  • Case Else → dijalankan jika tidak ada kondisi yang cocok.


Contoh 1 — Menentukan Hari

Sub NamaHari()

    Dim Hari As Integer

    Hari = 3

    Select Case Hari

        Case 1

            MsgBox "Senin"

        Case 2

            MsgBox "Selasa"

        Case 3

            MsgBox "Rabu"

        Case Else

            MsgBox "Hari tidak valid"

    End Select

End Sub

Karena nilai Hari adalah 3, hasilnya adalah "Rabu".


Menggunakan Beberapa Nilai dalam Satu Case

Satu blok Case dapat menangani beberapa nilai sekaligus.

Select Case Bulan

    Case 12, 1, 2

        MsgBox "Musim Hujan"

    Case 6, 7, 8

        MsgBox "Musim Kemarau"

End Select

Menggunakan Rentang Nilai

Select Case juga mendukung rentang nilai.

Sub NilaiHuruf()

    Dim Nilai As Integer

    Nilai = 82

    Select Case Nilai

        Case 90 To 100

            MsgBox "A"

        Case 80 To 89

            MsgBox "B"

        Case 70 To 79

            MsgBox "C"

        Case Else

            MsgBox "D"

    End Select

End Sub

Menggunakan Operator Perbandingan

Selain nilai tetap, Anda juga dapat menggunakan operator perbandingan dengan kata kunci Is.

Select Case Total

    Case Is >= 1000000

        MsgBox "Diskon Platinum"

    Case Is >= 500000

        MsgBox "Diskon Gold"

    Case Else

        MsgBox "Tidak ada diskon"

End Select

Perlu diperhatikan bahwa Is pada contoh ini berbeda dengan operator Is yang digunakan untuk membandingkan objek.

Di dalam Select Case, Case Is digunakan untuk membentuk kondisi perbandingan seperti >=, <=, atau <.


Menggunakan Teks

Select Case tidak hanya digunakan untuk angka.

Sub StatusPesanan()

    Dim Status As String

    Status = "Selesai"

    Select Case Status

        Case "Proses"

            MsgBox "Pesanan sedang diproses."

        Case "Selesai"

            MsgBox "Pesanan telah selesai."

        Case "Batal"

            MsgBox "Pesanan dibatalkan."

    End Select

End Sub

Studi Kasus

Misalkan sebuah toko memiliki kategori pelanggan berdasarkan total belanja.

Sub KategoriPelanggan()

    Dim Total As Double

    Total = 1250000

    Select Case Total

        Case Is >= 2000000

            MsgBox "Diamond"

        Case Is >= 1000000

            MsgBox "Platinum"

        Case Is >= 500000

            MsgBox "Gold"

        Case Else

            MsgBox "Silver"

    End Select

End Sub

Pendekatan ini jauh lebih mudah dibaca dibandingkan menggunakan beberapa ElseIf.


Select Case vs If...Then

Select CaseIf...Then
Cocok untuk banyak pilihan nilai Cocok untuk sedikit kondisi
Kode lebih ringkas Mudah digunakan pada kondisi sederhana
Lebih mudah dibaca Fleksibel untuk kondisi yang kompleks

Jika seluruh kondisi membandingkan satu variabel yang sama, Select Case biasanya menjadi pilihan yang lebih baik.


Kesalahan yang Sering Terjadi

Menggunakan Select Case untuk Kondisi yang Tidak Relevan

Jika setiap kondisi membandingkan variabel yang berbeda, If...Then sering kali lebih sesuai.

Gunakan Select Case ketika semua percabangan mengacu pada satu ekspresi yang sama.


Lupa Menambahkan Case Else

Walaupun bersifat opsional, Case Else sebaiknya tetap ditambahkan untuk menangani nilai yang tidak sesuai dengan kondisi mana pun.


Menulis Rentang Nilai yang Bertumpang Tindih

Contoh berikut dapat menghasilkan logika yang membingungkan.

Case 70 To 90

Case 80 To 100

Pastikan setiap rentang tidak saling bertumpang tindih agar hasil percabangan sesuai dengan yang diharapkan.


Tips Praktis

💡 Gunakan Select Case jika terdapat banyak kondisi yang membandingkan variabel yang sama.

💡 Gunakan Case Else sebagai kondisi cadangan.

💡 Susun rentang nilai secara berurutan agar kode lebih mudah dipahami.

💡 Hindari penggunaan Select Case jika kondisi melibatkan banyak variabel yang berbeda.

💡 Berikan komentar jika setiap Case menjalankan proses yang cukup panjang.


Ringkasan

PernyataanFungsi
Select Case Memulai struktur percabangan
Case Menentukan kondisi
Case Else Menangani kondisi yang tidak cocok
End Select Mengakhiri struktur Select Case

Kesimpulan

Select Case merupakan struktur percabangan yang sangat berguna ketika Anda harus menangani banyak kemungkinan nilai dari satu variabel. Dibandingkan menggunakan rangkaian If...ElseIf, kode yang ditulis dengan Select Case biasanya lebih ringkas, lebih mudah dibaca, dan lebih mudah dipelihara. Dengan memilih struktur percabangan yang tepat, Anda dapat membuat program VBA menjadi lebih rapi dan lebih mudah dikembangkan.

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.