Come consentire la selezione di una sola casella di controllo in un gruppo in Excel?
In alcune applicazioni di Excel, potrebbe essere necessario consentire agli utenti di selezionare solo un'opzione da un gruppo di caselle di controllo, imitando il comportamento dei pulsanti radio. Ad esempio, come mostrato nello screenshot sottostante, quando si seleziona una casella di controllo nella riga 2, tutte le altre caselle di controllo del gruppo vengono immediatamente disabilitate, assicurando che sia possibile fare solo una scelta alla volta. Questa restrizione è utile nei moduli di sondaggio, nelle liste di selezione a risposta singola o nei dashboard in cui si desidera impedire risposte multiple. Per ottenere questa funzionalità direttamente in Excel sono necessarie tecniche specifiche, come l'utilizzo del codice VBA. Questo articolo fornisce soluzioni pratiche per abilitare un effetto di "selezione singola" con le caselle di controllo in Excel, comprese istruzioni dettagliate e considerazioni importanti per l'uso pratico.
Consentire la selezione di una sola casella di controllo con il codice VBA
È possibile utilizzare il seguente approccio VBA per assicurarsi che solo una casella di controllo in un gruppo possa essere selezionata alla volta. Questa soluzione è particolarmente adatta quando si desidera un'esperienza fluida e automatica, ideale per modelli complessi o quando il controllo della logica di abilitazione/disabilitazione è importante.
1. Iniziate inserendo le caselle di controllo dove desiderate che venga applicata una selezione singola. Per questa soluzione, è necessario utilizzare le caselle di controllo ActiveX Control, poiché le caselle di controllo Form Controls non supportano direttamente il meccanismo di abilitazione/disabilitazione. Per inserire le caselle di controllo ActiveX, andate nella scheda Sviluppatore > Inserisci > Controlli ActiveX > Casella di controllo. Disponete tutte le caselle di controllo all'interno del gruppo desiderato come mostrato di seguito:
2. Premete contemporaneamente Alt + F11 per aprire la finestra Microsoft Visual Basic for Applications.
3. Nella finestra dell'editor, cliccate su Inserisci > Modulo di classe. Questo passaggio crea un nuovo modulo di classe, necessario per gestire gli eventi per più caselle di controllo. L'uso di un modulo di classe rende possibile rispondere al clic di ciascuna casella di controllo individualmente, indipendentemente dal numero di caselle di controllo presenti.
4. Trovate il nuovo modulo di classe nel riquadro Proprietà (generalmente a sinistra), cliccatelo e nella casella (Nome) rinominatelo dal valore predefinito (ad esempio Class1) in ClsChk. Quindi, copiate e incollate il seguente codice nella finestra del codice di questo modulo di classe. Vedere lo screenshot come riferimento:
Codice VBA 1: Selezionare una sola casella di controllo alla volta
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. Successivamente, cliccate su Inserisci > Modulo per aggiungere un modulo di codice standard. Copiate e incollate il seguente codice nella finestra del modulo. Questo codice inizializzerà e "collegherà" tutte le vostre caselle di controllo al gestore degli eventi definito sopra:
Codice VBA 2: Selezionare una sola casella di controllo alla volta
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. Premete F5 per eseguire il codice, che attiva la logica di selezione singola per il gruppo di caselle di controllo. Testate il comportamento selezionando una qualsiasi delle caselle; tutte le altre caselle dovrebbero immediatamente diventare non selezionate e disabilitate. Deselezionando la vostra scelta corrente, verranno riabilitate tutte le caselle di controllo in modo da poter fare una scelta diversa.
Nota: Se aggiungete o eliminate caselle di controllo dal vostro gruppo, sarà necessario rieseguire l'inizializzazione VBA. Questo perché i gestori di eventi vengono aggiornati ogni volta che il codice viene eseguito, assicurando che eventuali modifiche al gruppo di controlli siano riconosciute correttamente dal vostro VBA.
I vantaggi di questo metodo includono la completa automazione - gli utenti non possono accidentalmente selezionare più opzioni. Tuttavia, funziona solo con i controlli ActiveX, che possono essere limitati dalla versione di Excel, e i macro devono essere abilitati. Inoltre, distribuire cartelle di lavoro con controlli ActiveX o macro ad altri utenti potrebbe richiedere ulteriori autorizzazioni di sicurezza.
Articoli correlati:
- Come filtrare i dati in base alla casella di controllo in Excel?
- Come nascondere la casella di controllo quando la riga è nascosta in Excel?
- Come evidenziare la cella o la riga con la casella di controllo in Excel?
- Come creare un elenco a discesa con più caselle di controllo in Excel?
- Come inserire un timbro data in una cella se si spunta una casella di controllo in Excel?
I migliori strumenti per la produttività in Office
Potenzia le tue competenze in Excel con Kutools per Excel e sperimenta un'efficienza mai vista prima. Kutools per Excel offre oltre300 funzionalità avanzate per aumentare la produttività e farti risparmiare tempo. Clicca qui per ottenere la funzione di cui hai più bisogno...
Office Tab porta le schede su Office e rende il tuo lavoro molto più semplice
- Abilita la modifica e lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Apri e crea più documenti in nuove schede della stessa finestra invece che in nuove finestre.
- Aumenta la produttività del50% e riduce centinaia di clic del mouse ogni giorno!
Tutti gli add-in Kutools. Un solo programma di installazione
La suite Kutools for Office include add-in per Excel, Word, Outlook & PowerPoint più Office Tab Pro, ideale per i team che lavorano su più app di Office.





- Suite tutto-in-uno — Add-in per Excel, Word, Outlook & PowerPoint + Office Tab Pro
- Un solo programma di installazione, una sola licenza — configurazione in pochi minuti (pronto per MSI)
- Funzionano meglio insieme — produttività ottimizzata su tutte le app Office
- Prova completa30 giorni — nessuna registrazione, nessuna carta di credito
- Massimo risparmio — costa meno rispetto all’acquisto singolo degli add-in