Excel'de bir grupta yalnızca bir onay kutusunun seçilmesine nasıl izin verilir?
Aşağıdaki ekran görüntüsünde gösterildiği gibi, satır 2'de listelenen bir grup onay kutusu için, bir onay kutusu seçildiğinde veya işaretlendiğinde diğer tüm onay kutuları otomatik olarak devre dışı kalır. Bunu nasıl başarabilirsiniz? Bu makaledeki VBA kodu size yardımcı olabilir.
VBA kodu ile yalnızca bir onay kutusunun seçilmesini sağlayın
VBA kodu ile yalnızca bir onay kutusunun seçilmesini sağlayın
Aşağıdaki VBA kodlarını çalıştırarak bir onay kutusu grubunda aynı anda yalnızca bir onay kutusu seçebilirsiniz. Lütfen aşağıdaki adımları izleyin.
1. İlk olarak, ihtiyacınız olan onay kutularını ekleyin. Burada, aşağıdaki ekran görüntüsünde gösterildiği gibi ActiveX Control onay kutularını eklemelisiniz:
2. Ardından, Microsoft Visual Basic for Applications penceresini açmak için Alt + F11 tuşlarına aynı anda basın.
3. Açılan Microsoft Visual Basic for Applications penceresinde, Ekle > Sınıf Modülü'ne tıklayın.
4. Özellikler bölmesindeki (Ad) kutusunda sınıf adını ClsChk olarak değiştirin ve ardından aşağıdaki VBA kodunu ilgili Kod penceresine kopyalayıp yapıştırın. Ekran görüntüsüne bakın:
VBA kodu 1: Aynı anda 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. Şimdi Ekle > Modül'e tıklayın, ardından aşağıdaki VBA kodunu Modül penceresine kopyalayıp yapıştırın.
VBA kodu 2: Aynı anda 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 tuşuna basın.
Şimdi itibaren, çalışma sayfasındaki herhangi bir onay kutusu işaretlendiğinde, tüm diğer onay kutuları otomatik olarak devre dışı kalır ve onu tekrar etkinleştirmek için işareti kaldırabilirsiniz.
Not: Yeni bir onay kutusu onay kutusu grubuna eklendiğinde, tüm onay kutularını yeniden etkinleştirmek için VBA kodunu yeniden çalıştırın. Onay kutusu grubundan onay kutusu silmek de kodu yeniden çalıştırmayı gerektirir.
İ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 hücre veya satır onay kutusuyla nasıl vurgulanır?
- Excel'de çoklu onay kutularıyla 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 geliştirin ve daha önce hiç olmadığı kadar verimli olun. Kutools for Excel, üretkenliğinizi artırmak ve zamanınızı kaydetmek için300'den fazla gelişmiş özellik sunar. En çok ihtiyacınız olan özelliği almak için buraya tıklayın...
Office Tab, Office'e sekmeli arayüz getirir ve işinizi çok daha kolaylaştırır
- Word, Excel, PowerPoint'te sekmeli düzenleme ve okuma özelliğini etkinleştirin.
- Aynı pencerenin yeni sekmelerinde birden fazla belge açın ve oluşturun, yeni pencerelerde değil.
- Verimliliğinizi %50 artırır ve her gün yüzlerce fare tıklamasını azaltır!