Cara Memilih Ini atau Itu dalam Macro VBA Excel
Materi pembahasan kita kali ini dimulai dengan menyebutkan beberapa kode dalam macro Anda yang akan memerlukan proses bypass secara khusus.
Diantara banyaknya bahasa pemrograman komputer, termasuk VBA, tersedia penyusunan kode Anda yang fleksibel sehingga setiap perintah tidak perlu dijalankan dalam setiap kasus.
Anda akan menulis kode macro dimana Anda akan membuat program menjalankan perintah tertentu jika pengguna memilih Yes dan perintah alternatif jika pengguna memilih No.
Meskipun semua perintah tersebut merupakan bagian dari kode macro, namun hanya satu kumpulan saja darinya yang bisa dijalankan.
If...Then
Diantara perintah pengambilan keputusan dalam VBA, pernyataan If...Then mungkin adalah yang paling sederhana dan suatu cara yang paling umum digunakan untuk menyusun skenario pengandaian Anda.
Anda bisa perhatikan kode macro berikut:
Dim HariIni, HariKerja
HariIni = #8/23/2021#
HariKerja = Weekday(HariIni)
If HariKerja = 2 Then
MsgBox "Selamat beraktivitas!", , "Hari ini hari Senin!"
End If
End Sub
Dalam Excel Anda tentu mengenal fungsi WEEKDAY yang akan menghasilkan nilai 1 hingga 7 sebagai hari-hari dalam satu minggu, yang mana dimulai dari 1 sebagai hari Minggu, dan seterusnya hingga 7 sebagai hari Sabtu.
VBA akan melihat garis kode dan menampilkan kotak pesan jika garis kode tersebut dijalankan pada hari Senin karena hari Senin diwakili oleh nomor 2.
Adapun jika hari kerja lainnya selain hari Senin, maka VBA melakukan bypass atau hanya melewatkan garis kode ini sehingga kotak pesan tidak ditampilkan di layar.
If...Then...Else
Pada situasi tertentu, penilaian Anda akan melibatkan lebih dari dua kondisi.
Saat Anda memiliki dua kondisi tersebut dan setiap kondisinya mempunyai kumpulan tugas yang diembannya masing-masing, maka Anda perlu memisahkan kedua kondisi tersebut dengan pernyataan Else dalam struktur If.
Sebagai contoh Anda ingin menampilkan kotak pesan jika hari ini adalah hari Senin, namun kotak pesan berbeda akan langsung ditampilkan jika hari ini bukan hari Senin.
Maka, format yang dipakai pada macro sebagai berikut:
Dim HariIni, HariKerja
HariIni = #8/23/2021#
HariKerja = Weekday(HariIni)
If HariKerja = 2 Then
MsgBox "Selamat beraktivitas!", , "Hari ini hari Senin!"
Else
MsgBox "Waduh, hari ini bukan Senin.", , "Masih belum hari Senin!"
End If
End Sub
Sebagai tip, alangkah lebih baik jika menuliskan kode If dengan cara mendahulukan kondisi dalam contoh enam diantara tujuh hari lainnya selain hari Senin sehingga lebih mempercepat program dan susunan pernyataannya menjadi seperti ini:
MsgBox "Waduh, hari ini bukan Senin.", , "Masih belum hari Senin!"
Else
MsgBox "Selamat beraktivitas!", , "Hari ini hari Senin!"
End If
If...Then...ElseIf
VBA menyediakan pengembangan dari pemanfaatan struktur pengandaian If...Then...Else saat lebih dari dua kondisi harus dinilai.
Contohnya jika Anda ingin menampilkan kotak pesan untuk setiap hari kerja dan akhir pekan, maka Anda perlu menyatakan kondisi ini pada struktur If tunggal tergantung hari manakah dalam sepekan yang akan macro jalankan.
Cara yang dapat menangani kasus ini adalah dengan menggunakan struktur If...Then...ElseIf seperti contoh kode macro di bawah ini:
Dim HariIni, HariKerja
HariIni = #8/23/2021#
HariKerja = Weekday(HariIni)
'Senin
If HariKerja = 2 Then
MsgBox "Waduh, balik kerja lagi deh.", , "Hari ini Senin"
'Selasa
ElseIf HariKerja = 3 Then
MsgBox "Setidaknya bukan hari Senin lagi kan!", , "Hari ini Selasa"
'Rabu
ElseIf HariKerja = 4 Then
MsgBox "Sudah setengah jalan minggu kerja!", , "Hari ini Rabu"
'Kamis
ElseIf HariKerja = 5 Then
MsgBox "Semakin dekat ke akhir pekan.", , "Hari ini Kamis"
'Jumat
ElseIf HariKerja = 6 Then
MsgBox "Selamat berakhir pekan!", , "Hari ini Jumat!"
'Sabtu atau Minggu
ElseIf HariKerja = 7 Or HariKerja = 1 Then
MsgBox "Selamat menikmati akhir pekan!", , "Hari ini akhir pekan!"
End If
End Sub
Perhatikan bahwa kelima kondisi pertama bertepatan dengan lima hari kerja mulai dari hari Senin hingga Jumat, sedangkan kondisi akhir menggunakan penghubung OR untuk mengidentifikasi akhir pekan yaitu Hari Sabtu dan Minggu.
IIF
Fungsi IIF memang jarang diketahui dan dimanfaatkan sebagai fungsi pengandaian dalam VBA.
Susunan sintaks IIF adalah:
IIF(Pernyataan, BagianTrue, BagianFalse)
Jika pada contoh If...Then...Else susunannya terdiri dari lima-garis.
MsgBox "Selamat beraktivitas!", , "Hari ini hari Senin!"
Else
MsgBox "Waduh, hari ini bukan Senin.", , "Masih belum hari Senin!"
End If
maka fungsi IIF dapat membuatnya menjadi satu-garis saja, seperti ini:
Sehingga pada macro ditulis:
Dim HariIni, HariKerja
HariIni = #8/23/2021#
HariKerja = Weekday(HariIni)
MsgBox IIf(HariKerja = 2, "Hari ini Senin!", "Belum hari Senin!")
End Sub
Select Case
Jika dibandingkan dengan struktur If, Select Case adalah yang lebih sederhana dan mudah untuk digunakan.
Kata kunci Case pada struktur Select Case mirip dengan kata kunci If dan ElseIf.
Kata kunci Case menguji nilai True pada kondisi tertentu maupun juga pada sekumpulan kondisi.
Anda bisa menggunakan pernyataan Case sebanyak yang Anda inginkan dan hanya kode yang berhubungan dengan Case pertama dengan penilaian True yang akan dijalankan.
Kode macro di bawah ini adalah cara yang berbeda namun tetap menghasilkan nilai yang sama seperti pada struktur If...Then...ElseIf yang telah dijelaskan di atas:
Dim HariIni, HariKerja
HariIni = #8/23/2021#
HariKerja = Weekday(HariIni)
Select Case HariKerja
Case 2 'Senin
MsgBox "Waduh, balik kerja lagi deh.", , "Hari ini Senin"
Case 3 'Selasa
MsgBox "Setidaknya bukan hari Senin lagi kan!", , "Hari ini Selasa"
Case 4 'Rabu
MsgBox "Sudah setengah jalan minggu kerja!", , "Hari ini Rabu"
Case 5 'Kamis
MsgBox "Semakin dekat ke akhir pekan.", , "Hari ini Kamis"
Case 6 'Jumat
MsgBox "Selamat berakhir pekan!", , "Hari ini Jumat!"
Case 1, 7 'Sabtu atau Minggu
MsgBox "Selamat menikmati akhir pekan!", , "Hari ini hari akhir pekan!"
End Select
End Sub
Anda bisa melihat variabel HariKerja hanya dituliskan sekali saja pada statement Select Case, jika dibandingkan sebelumnya pada statement ElseIf.
Selain itu, setiap Case terlihat lebih rapi dan lebih mudah dibaca.
Siasat Select Case yang berguna adalah kemampuannya dalam mengelompokkan beberapa kondisi tertentu ke dalam sebuah Case tunggal jika tidak memenuhi suatu pengujuan tertentu.
Sebagai contoh, perusahaan Anda mengusahakan anggaran belanja dalam jangka waktu setahun yang terbagi menjadi empat kwartal.
Dengan menggunakan struktur Select Case, Anda dapat mengelompokkan kondisi yang berbeda ke dalam Case yang sama seperti dalam contoh macro berikut:
Dim HariIni, HariKerja
HariIni = #8/23/2021#
Bulan = Month(HariIni)
Select Case Bulan
Case 1 To 3: MsgBox "Kuartal 1"
Case 4 To 6: MsgBox "Kuartal 2"
Case 7 To 9: MsgBox "Kuartal 3"
Case 10 To 12: MsgBox "Kuartal 4"
End Select
End Sub
Seperti yang Anda lihat, tidak perlu menuliskan 12 buah statement yang terpisah untuk menangani setiap pengandaian bulan, Anda hanya perlu menuliskan rentang bulan dengan menggunakan statement To di setiap Case.
Jika urusannya adalah bilangan ratusan, ribuan, atau berapa pun itu, maka sebagai contoh terakhir dalam pembahasan ini, kami tunjukkan sebuah contoh sederhana memanfaatkan struktur Select Case.
Sebut saja Anda ingin membuat macro yang dapat menilai jumlah suatu kunjungan di suatu pertemuan dan jumlah orang yang hadir tercatat sebanyak 6210 orang di sel A1.
Dim Tamu As Long
Tamu = Range("A1").Value
Select Case Tamu
Case Is < 1000: MsgBox "Hampir Banyak!"
Case Is < 5000: MsgBox "Memang Banyak!"
Case Is >= 5000: MsgBox "Busyet! Banyak Bangaat!"
End Select
End Sub
Itulah materi kita kali ini tentang cara terbaik untuk memilih ini atau itu di Excel dengan Macro VBA, selamat mempraktekkan dan semoga bermanfaat.
