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çmelerine izin vermeniz gerekebilir—bu, radyo düğmelerinin davranışını 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 tüm diğer onay kutuları anında devre dışı kalır ve herhangi bir anda yalnızca tek bir seçeneğin mümkün olması sağlanır. Bu kısıtlama, birden fazla cevaba engel olmak istediğiniz anket formları, tek cevaplı seçim listeleri veya panolar için kullanışlıdır. Excel'de bu işlevselliği doğrudan gerçekleştirmek, VBA kodu kullanma gibi belirli teknikler gerektirir. Bu makale, Excel'deki onay kutularıyla "tek seçim" etkisini etkinleştirmek için pratik çözümler sunar ve gerçek dünya kullanımına yönelik adım adım talimatlar ve önemli hususlar içerir.
Yalnızca bir onay kutusunun seçilmesini VBA kodu ile sağlayın
Aşağıdaki VBA yaklaşımını kullanarak bir grupta aynı anda yalnızca bir onay kutusunun seçilebilmesini sağlayabilirsiniz. Bu çözüm, özellikle karmaşık şablonlarda veya etkinleştirme/devre dışı bırakma mantığını kontrol etmenin önemli olduğu durumlarda sorunsuz ve otomatik bir deneyim gerektiğinde uygundur.
1. Tek bir seçimin zorlanmasını istediğiniz yerlere onay kutularını ekleyerek başlayın. Bu çözüm için, Form Kontrolleri onay kutuları doğrudan etkinleştirme/devre dışı bırakma mekanizmasını desteklemediği için ActiveX Kontrol onay kutuları kullanmanız gerekir. ActiveX onay kutularını eklemek için Geliştirici sekmesine gidin > Ekle > ActiveX Kontrolleri > Onay Kutusu. Aşağıda gösterildiği gibi, tüm onay kutularını istediğiniz gruba yerleştirin:
2. Microsoft Visual Basic for Applications penceresini açmak için Alt + F11 tuşlarına birlikte basın.
3. Düzenleyici penceresinde, Ekle > Sınıf Modülü'ne tıklayın. Bu adım, birden fazla onay kutusu için olayları işlemek üzere yeni bir sınıf modülü oluşturur. Bir sınıf modülü kullanmak, mevcut kaç onay kutusu olursa olsun her bir onay kutusunun bireysel olarak tıklanmasına yanıt vermeyi mümkün kılar.
4. Özellikler bölmesinde (genellikle solda) yeni sınıf modülünü bulun, üzerine tıklayın ve (Ad) kutusunda varsayılan değeri (örneğin Class1) ClsChk olarak değiştirin. 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 kod1: Her seferde yalnızca bir onay kutusu 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. Daha sonra, Ekle > Modül'e 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şleyicisine tüm onay kutularınızı "bağlayacak" ve başlatacaktır:
VBA kod2: Her seferde yalnızca bir onay kutusu 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'e basın, bu da onay kutusu grubunuz için tek seçim mantığını etkinleştirir. Herhangi bir kutuyu işaretleyerek davranışı test edin; tüm diğer kutular anında işaretlenmemiş ve devre dışı kalır. Geçerli seçiminizi kaldırırsanız, tüm onay kutuları yeniden etkinleştirilir ve farklı bir seçim yapabilirsiniz.
Not: Grubunuza herhangi bir onay kutusu eklerseniz veya silerseniz, başlatma VBA'sını yeniden çalıştırmanız gerekir. Bunun nedeni, kod her çalıştırıldığında olay işleyicilerinin yenilenmesi ve kontrol 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 ActiveX kontrolleriyle çalışır, bu da Excel sürümüyle sınırlı olabilir ve makroların etkinleştirilmesi gerekir. Ayrıca, ActiveX kontrolleri veya makrolar içeren çalışma kitaplarını diğer kullanıcılara dağıtmak ek güvenlik izinleri gerektirebilir.
İlgili makaleler:
- Excel'de onay kutusuna göre veriler nasıl filtrelenir?
- Excel'de satır gizlendiğinde onay kutusu nasıl gizlenir?
- Excel'de onay kutusuyla hücre veya satır nasıl vurgulanır?
- Excel'de çoklu onay kutuları içeren bir açılır liste nasıl oluşturulur?
- Excel'de bir onay kutusu işaretlendiğinde bir hücreye tarih damgası nasıl eklenir?
En İyi Ofis Verimlilik Araçları
Kutools for Excel ile Excel becerilerinizi güçlendirin ve benzersiz bir verimlilik deneyimi yaşayın. Kutools for Excel, üretkenliği artırmak ve zamandan tasarruf etmek için300'den fazla Gelişmiş Özellik sunuyor. İhtiyacınız olan özelliği almak için buraya tıklayın...
Office Tab, Ofis uygulamalarına sekmeli arayüz kazandırır ve işinizi çok daha kolaylaştırır.
- Word, Excel, PowerPoint'te sekmeli düzenleme ve okuma işlevini etkinleştirin.
- Yeni pencereler yerine aynı pencerede yeni sekmelerde birden fazla belge açıp oluşturun.
- Verimliliğinizi %50 artırır ve her gün yüzlerce mouse tıklaması azaltır!
Tüm Kutools eklentileri. Tek kurulum
Kutools for Office paketi, Excel, Word, Outlook & PowerPoint için eklentileri ve Office Tab Pro'yu bir araya getirir; Office uygulamalarında çalışan ekipler için ideal bir çözümdür.





- Hepsi bir arada paket — Excel, Word, Outlook & PowerPoint eklentileri + Office Tab Pro
- Tek kurulum, tek lisans — dakikalar içinde kurulun (MSI hazır)
- Birlikte daha verimli — Ofis uygulamalarında hızlı üretkenlik
- 30 günlük tam özellikli deneme — kayıt yok, kredi kartı yok
- En iyi değer — tek tek eklenti almak yerine tasarruf edin