Excel'de bir grupta yalnızca bir onay kutusunun seçilmesine nasıl izin verilir?
Bazı Excel uygulamalarında, kullanıcıların bir grup onay kutusundan yalnızca bir seçeneği seçmesini sağlayabilirsiniz—bu davranış, Radyo Düğmesi’nin işleyişini taklit eder. Örneğin aşağıdaki ekran görüntüsünde gösterildiği gibi, 2. satırdaki bir onay kutusunu işaretlediğinizde gruptaki diğer tüm onay kutuları anında devre dışı bırakılır; böylece aynı anda yalnızca tek bir seçim yapılabilir. Bu kısıtlama, anket formları, tek cevaplı seçim listeleri veya çoklu yanıtları önlemek istediğiniz panolar gibi senaryolarda oldukça kullanışlıdır. Excel’de bu işlevselliği doğrudan elde etmek, VBA kodu gibi özel teknikler gerektirir. Bu makale, Excel’de onay kutularıyla “tek seçim” etkisini etkinleştirmek için pratik çözümler sunar ve adım adım talimatlarla gerçek kullanım için dikkat edilmesi gereken önemli noktaları içerir.

Yalnızca bir onay kutusunun VBA koduyla seçili olmasını sağlayın
Aynı anda yalnızca bir onay kutusunun seçili olabilmesini sağlamak için aşağıdaki VBA yaklaşımını kullanabilirsiniz. Bu çözüm, karmaşık şablonlarda veya etkinleştirme/devre dışı bırakma mantığının kritik olduğu durumlarda sorunsuz ve otomatik bir kullanıcı deneyimi sunması açısından idealdir.
1. Tek seçim zorlamak istediğiniz yere önce onay kutularını ekleyin. Bu çözüm için mutlaka ActiveX Denetimi onay kutularını kullanmalısınız; çünkü Form Denetimi onay kutuları doğrudan etkinleştirme/devre dışı bırakma mekanizmasını desteklemez. ActiveX onay kutuları eklemek için Geliştirici sekmesine gidin > Ekle > ActiveX Denetimleri > Onay Kutusu. Aşağıdaki gibi tüm onay kutularını istediğiniz grupta düzenleyin:

2. Alt+F11 tuşlarına aynı anda basarak Microsoft Visual Basic for Applications penceresini açın.
3. Düzenleyici penceresinde Ekle > Sınıf Modülü seçeneğine tıklayın. Bu adım, birden fazla onay kutusunun olaylarını işlemek üzere yeni bir sınıf modülü oluşturur. Sınıf modülü kullanmak, kaç tane onay kutusu olursa olsun her birine ayrı ayrı tıklama olaylarıyla yanıt vermenizi sağlar.

4. Yeni sınıf modülünü sol taraftaki ()Özellikler) bölmesinde bulun, üzerine tıklayın ve (Ad) kutusuna varsayılan değeri (örneğin Class1) değiştirerek adını ClsChk yapın. Ardından aşağıdaki kodu bu sınıf modülünün kod penceresine kopyalayıp yapıştırın. Referans olarak ekran görüntüsüne bakın:

VBA kodu 1: Aynı anda yalnızca bir onay kutusunu seçin
Option Explicit
Public WithEvents Chk As MSForms.CheckBox
Private Sub Chk_Click()
Call SelOneCheckBox(Chk)
End Sub
Sub SelOneCheckBox(Target As Object)
Dim xObj As Object
Dim I As String
Dim n As Integer
If Target.Object.Value = True Then
I = Right(Target.Name, Len(Target.Name) - 8)
For n = 1 To ActiveSheet.OLEObjects.Count
If n <> Int(I) Then
Set xObj = ActiveSheet.OLEObjects.Item(n)
xObj.Object.Value = False
xObj.Object.Enabled = False
End If
Next
Else
I = Right(Target.Name, Len(Target.Name) - 8)
For n = 1 To ActiveSheet.OLEObjects.Count
If n <> Int(I) Then
Set xObj = ActiveSheet.OLEObjects.Item(n)
xObj.Object.Enabled = True
End If
Next
End If
End Sub
5. Ardından Ekle > Modül seçeneğine tıklayarak standart bir kod modülü ekleyin. Aşağıdaki kodu modül penceresine kopyalayıp yapıştırın. Bu kod, yukarıda tanımlanan olay işleyiciyle tüm onay kutularınızı "bağlayarak" başlatacaktır:
VBA kodu 2: Aynı anda yalnızca bir onay kutusunu seçin
Dim xCollection As New Collection
Public Sub ClsChk_Init()
Dim xSht As Worksheet
Dim xObj As Object
Dim xChk As ClsChk
Set xSht = ActiveSheet
Set xCollection = Nothing
For Each xObj In xSht.OLEObjects
If xObj.Name Like "CheckBox**" Then
Set xChk = New ClsChk
Set xChk.Chk = CallByName(xSht, xObj.Name, VbGet)
xCollection.Add xChk
End If
Next
Set xChk = Nothing
End Sub 6. Kodu çalıştırmak için F5 tuşuna basın; bu işlem, onay kutusu grubunuzda tek seçim mantığını etkinleştirir. Herhangi bir kutuyu işaretleyerek davranışı test edin—diğer tüm kutular hemen işaretlenmemiş ve devre dışı bırakılmış olmalıdır. Geçerli seçiminizin işaretini kaldırırsanız, tüm onay kutuları tekrar etkinleşir ve farklı bir seçim yapabilirsiniz.

Not: Grubunuza herhangi bir onay kutusu ekler veya silerseniz, başlatma VBA'sını tekrar çalıştırmanız gerekir. Bunun nedeni, olay işleyicilerin kod her yürütüldüğünde yenilenmesi ve böylece denetim grubundaki değişikliklerin VBA tarafından doğru şekilde tanınmasıdır.
Bu yöntemin avantajları arasında tam otomasyon yer alır—kullanıcılar yanlışlıkla birden fazla seçenek seçemez. Ancak yalnızca Excel sürümüne bağlı olarak sınırlı olabilen ActiveX denetimleriyle çalışır ve makroların etkinleştirilmesini gerektirir. Ayrıca, ActiveX denetimleri veya makrolar içeren çalışma kitaplarını diğer kullanıcılara dağıtmak ek güvenlik izinleri gerektirebilir.
İlgili makaleler:
- Excel'de verileri onay kutusuna göre nasıl filtreleyebilirim?
- Excel'de bir satır gizlendiğinde ilgili onay kutusunu da gizlemek için ne yapmalıyım?
- Excel'de onay kutusu kullanarak bir hücreyi veya satırı nasıl vurgulayabilirim?
- Excel'de birden fazla onay kutusu içeren bir açılır liste nasıl oluşturulur?
- Excel'de bir onay kutusu işaretlendiğinde ilgili hücreye nasıl tarih damgası eklenir?
En İyi Office Üretkenlik Araçları
Excel becerilerinizi Kutools for Excel ile geliştirin ve verimlilikte hiç yaşamadığınız bir deneyim yaşayın.Kutools for Excel, üretkenliği artırmak ve Zamanı Kaydet için 300’den fazla gelişmiş özelliğe sahiptir.İhtiyacınız olan özelliği hemen edinmek için buraya tıklayın…
Office Tab, Office uygulamalarına sekmeli bir arayüz kazandırarak işlerinizi çok daha kolay hale getirir.
- Word, Excel, PowerPoint, Publisher, Access, Visio ve Project'te sekmeli düzenleme ve okuma özelliğini etkinleştirin.
- Belgeleri yeni pencerelerde değil, aynı pencerenin yeni sekmelerinde açıp oluşturun.
- Günlük üretkenliğinizi %50 artırır ve her gün yüzlerce fare tıklamasından tasarruf etmenizi sağlar!
Tüm Kutools eklentileri — tek bir kurulum dosyasında!
Kutools for Office paketi, Excel, Word, Outlook ve PowerPoint eklentilerini ve ayrıca Office Tab Pro’yu içeren kapsamlı bir çözümdür; Office uygulamalarında çalışan ekipler için idealdir.
- Hepsi bir arada paket— Excel, Word, Outlook ve PowerPoint eklentileri + Office Tab Pro
- Tek kurulum, tek lisans— birkaç dakikada hazır (MSI uyumlu)
- Birlikte daha iyi çalışır— Office uygulamalarında akıcı üretkenlik
- 30 günlük tam özellikli deneme— kayıt gerekmez, kredi kartı gerekmez
- En iyi fiyat performans— ayrı ayrı eklenti satın almaya göre tasarruf sağlar