Hoe kunt u ervoor zorgen dat slechts één selectievakje in een groep geselecteerd kan worden in Excel?
Zoals in de onderstaande schermafbeelding te zien is, voor een groep selectievakjes die in rij 2 zijn weergegeven, wanneer u er één selecteert of aanvinkt, worden alle andere automatisch uitgeschakeld. Hoe bereikt u dit? De VBA-code in dit artikel kan u helpen.
Maak slechts één selectievakje selecteerbaar met VBA-code
Maak slechts één selectievakje selecteerbaar met VBA-code
U kunt de onderstaande VBA-codes uitvoeren om slechts één selectievakje tegelijk te selecteren in een groep selectievakjes. Volg hiervoor de volgende stappen.
1. Voeg eerst de selectievakjes in zoals u nodig hebt. Hier moet u de ActiveX Control-selectievakjes invoegen zoals in de volgende schermafbeelding te zien is:
2. Druk vervolgens gelijktijdig op Alt + F11 om het Microsoft Visual Basic for Applications-venster te openen.
3. Klik in het geopende Microsoft Visual Basic for Applications-venster op Invoegen > Class Module.
4. Wijzig de klassennaam naar ClsChk in het (Naam)-vak van het Eigenschappenpaneel en kopieer en plak vervolgens de onderstaande VBA-code in het bijbehorende Codevenster. Zie schermafbeelding:
VBA-code 1: Selecteer slechts één selectievakje tegelijk
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. Klik nu op Invoegen > Module, kopieer en plak vervolgens de onderstaande VBA-code in het Modulevenster.
VBA-code 2: Selecteer slechts één selectievakje tegelijk
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. Druk op de F5-toets om de code uit te voeren.
Vanaf nu, wanneer u een van de selectievakjes in het werkblad aanvinkt, worden alle andere selectievakjes automatisch uitgeschakeld, en kunt u het deselecteren om alle selectievakjes opnieuw te activeren.
Opmerking: Als er een nieuw selectievakje wordt toegevoegd aan de groep selectievakjes, voer dan de VBA-code opnieuw uit om alle selectievakjes opnieuw te activeren. Het verwijderen van een selectievakje uit de groep vereist ook het opnieuw uitvoeren van de code.
Gerelateerde artikelen:
- Hoe filtert u gegevens op basis van een selectievakje in Excel?
- Hoe verbergt u een selectievakje wanneer een rij verborgen is in Excel?
- Hoe markeert u een cel of rij met een selectievakje in Excel?
- Hoe maakt u een vervolgkeuzelijst met meerdere selectievakjes in Excel?
- Hoe voegt u een datumstempel in een cel in als u een selectievakje aankruist in Excel?
Beste Office-productiviteitstools
Versterk je Excel-vaardigheden met Kutools voor Excel en ervaar ongeëvenaarde efficiëntie. Kutools voor Excel biedt meer dan300 geavanceerde functies om je productiviteit te verhogen en tijd te besparen. Klik hier om de functie te krijgen die je het meest nodig hebt...
Office Tab brengt een tabbladinterface naar Office en maakt je werk veel eenvoudiger
- Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in
- Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster, in plaats van in nieuwe vensters.
- Verhoog je productiviteit met50% en bespaar dagelijks honderden muisklikken!