Hoe kan ik ervoor zorgen dat slechts één selectievakje wordt geselecteerd in een groep selectievakjes in Excel?
Zoals de onderstaande schermafbeelding laat zien, zullen voor een groep selectievakjes in rij 2, wanneer slechts één selectievakje wordt geselecteerd of aangevinkt, de andere selectievakjes worden uitgeschakeld. Hoe bereik je dit? De VBA-code in dit artikel kan u helpen.
Maak slechts één selectievakje om te worden geselecteerd met VBA-code
Maak slechts één selectievakje om te worden geselecteerd met VBA-code
U kunt de onderstaande VBA-codes uitvoeren om slechts één selectievakje in een selectievakje per keer te selecteren. Ga als volgt te werk.
1. Voer eerst de gewenste selectievakjes in. Hier moet u de Selectievakjes voor ActiveX-besturingselement zoals volgend screenshot getoond:
2. Druk vervolgens op anders + F11-toetsen tegelijk openen om het Microsoft Visual Basic voor toepassingen venster.
3. In de opening Microsoft Visual Basic voor toepassingen venster klikt Invoegen > Klasse Module.
4. Wijzig de klassenaam in ClsChk in de (Naam) doos van de Properties en kopieer en plak de onderstaande VBA-code in het overeenkomstige Code venster. Zie screenshot:
VBA-code 1: selecteer slechts één selectievakje per keer
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 Invoegen > Module, kopieer en plak vervolgens de onderstaande VBA-code in het Module venster.
VBA-code 2: selecteer slechts één selectievakje per keer
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 de F5 sleutel om de code uit te voeren.
Vanaf nu, wanneer u een van de selectievakjes in het werkblad aanvinkt, worden de andere selectievakjes automatisch uitgeschakeld en kunt u deze uitschakelen om alle selectievakjes weer te activeren.
Note: Als er een nieuw selectievakje is toegevoegd aan de selectievakgroep, voer dan de VBA-code opnieuw uit om alle selectievakjes opnieuw te activeren. Als u het selectievakje uit de selectievakjesgroep verwijdert, moet de code ook opnieuw worden uitgevoerd.
Ropgetogen artikelen:
- Hoe gegevens filteren op basis van selectievakjes in Excel?
- Hoe het selectievakje te verbergen wanneer de rij is verborgen in Excel?
- Hoe cel of rij markeren met selectievakje in Excel?
- Hoe maak je een vervolgkeuzelijst met meerdere selectievakjes in Excel?
- Hoe een datumstempel in een cel invoegen als een selectievakje in Excel is aangevinkt?
Beste Office-productiviteitstools
Geef uw Excel-vaardigheden een boost met Kutools voor Excel en ervaar efficiëntie als nooit tevoren. Kutools voor Excel biedt meer dan 300 geavanceerde functies om de productiviteit te verhogen en tijd te besparen. Klik hier om de functie te krijgen die u het meest nodig heeft...
Office-tabblad Brengt een interface met tabbladen naar Office en maakt uw werk veel gemakkelijker
- Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in, Publisher, Access, Visio en Project.
- Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster in plaats van in nieuwe vensters.
- Verhoogt uw productiviteit met 50% en vermindert honderden muisklikken voor u elke dag!