Prasyarat:
Option Button Control adalah salah satu jenis kontrol dalam VBA yang biasanya digunakan untuk memberikan pilihan eksklusif kepada pengguna, di mana pengguna hanya dapat memilih satu opsi dari beberapa opsi yang tersedia.
Secara tampilan, Option Button Control biasanya berupa tombol bulat atau kotak kecil yang dapat diaktifkan (dipilih) atau dinonaktifkan (tidak dipilih) dengan mengkliknya.
Ketika satu Option Button Control dipilih, maka otomatis Option Button Control lain yang terhubung dengannya akan dinonaktifkan, sehingga hanya satu opsi yang dapat dipilih pada suatu waktu.
Fungsi Option Button Control sangat berguna ketika Anda ingin memberikan pilihan tunggal kepada pengguna, misalnya dalam formulir dengan pertanyaan “Ya” atau “Tidak,” atau dalam pemilihan opsi seperti “Laki-laki” atau “Perempuan.”
Ketika pengguna memilih Option button maka nilai yang dihasilkan bertype Boolean. TRUE jika option button di pilih, sedangkan FALSE jika tidak dipilih.
Berikut adalah contoh kode sederhana dalam VBA untuk membuat dua Option Button Control yang terkait ketika akan disimpan di Sheet:
Private Sub Simpan_Click() If OptionButton1.Value Then Range("A2").Value = "Laki-laki" Else Range("A2").Value = "Perempuan" End If End Sub
Pada script diatas melakukan pengecekan pada Option Button1 jika terpilih maka Range A2 akan diisi Laki-laki sedangkan jika tidak (Berarti Perempuan) maka akan diisi perempuan.
Untuk Option Button dengan 2 pilihan saja bisa juga menggunakan IMMEDIATE IF. Untuk contohnya bisa dilihat dibawah ini:
Private Sub Simpan_Click() Range("A2").Value = IIF(OptionButton1.Value,"Laki-laki","Perempuan") End Sub
Untuk option button yang memiliki pilihan lebih dari 3 pilihan bisa menggunkan IF bertingkat dengan tambahan variable agar tidak terjadi pengulangan script. Contohnya:
Private Sub Simpan_Click() Dim KartuID as String If OptionButton1.Value Then KartuID = "SIM" Elseif OptionButton2.Value Then KartID = "KTP" Else KartID = "Kartu Pelajar" End If Range("A2").Value = KartuID End Sub
Atau jika ingin lebih mudah dalam menggunakan Option Button ini, bisa dibuat sebuah fungsi khusus untuk mendapatkan nilai dari Option Button.
Function getOption(GroupName As String) As String Dim ctrl As MSForms.Control For Each ctrl In Me.Controls If TypeName(ctrl) = "OptionButton" Then If ctrl.GroupName = GroupName And ctrl.Value Then getOption = ctrl.Caption Exit Function End If End If Next ctrl End Function
Untuk penggunaannya cukup gunakan dengan getoption("Namagroup")
Ketika banyak jenis pilihan yang berbeda group pada satu Userform biasanya ini akan menjadi masalah, dimana masalah muncul pilihannya menjadi satu kesatuan. Contohnya seperti dibawah ini.
Pilihan jenis kelamin dan Kartu Identitas menjadi satu kesatuan pilihan dimana seharusnya menjadi pilihan yang berbeda.
Disini VBA menganggap semua option button adalah satu kesatuan. Hal ini terjadi karena pada Option button belum di setting GroupName pada masing-masing Property di Option button.
Property Groupname digunakan untuk mengelempokan jenis option button dalam satu kategori yang sama. Sehingga VBA bisa mengenali setiap group option button yang satu jenis.
Pada contoh diatas, Option Laki-laki
dan Option Perempuan
diberi nama GroupName misalnya JK
atau boleh juga JenisKelamin, sedangkan Option KTP
, Option SIM
dan Option Kartu Pelajar
pada Property GroupName diisi dengan IDCard misalnya.
Sehingga ketika dipilih menjadi 2 pilihan kategori yang berbeda. Karena setiap Option button memiliki Group Name yang berbeda.