Come fare per consentire la selezione di una sola casella di controllo all’interno di un gruppo in Excel?
In alcune applicazioni di Excel potrebbe essere necessario consentire agli utenti di selezionare un’unica opzione da un gruppo di caselle di controllo, replicando il comportamento dei pulsanti di opzione. Ad esempio, come mostrato nell’immagine seguente, quando si seleziona una casella di controllo nella riga 2, tutte le altre del gruppo vengono immediatamente deselezionate, garantendo che sia possibile effettuare una sola scelta alla volta. Questa funzionalità è particolarmente utile nei moduli per sondaggi, negli elenchi a risposta singola o nei pannelli di controllo in cui si desidera evitare selezioni multiple. Per implementare questo comportamento direttamente in Excel sono necessarie tecniche specifiche, come l’utilizzo di codice VBA. Questo articolo offre soluzioni pratiche per ottenere l’effetto «selezione singola» con le caselle di controllo in Excel, complete di istruzioni dettagliate e considerazioni fondamentali per un utilizzo efficace nel contesto reale.

Consenti la selezione di una sola casella di controllo tramite codice VBA
È possibile utilizzare il seguente approccio VBA per garantire che, all’interno di un gruppo, possa essere selezionata una sola casella di controllo alla volta. Questa soluzione è particolarmente indicata quando si desidera un’esperienza automatica e fluida, ideale per modelli complessi o nei casi in cui è fondamentale gestire in modo preciso la logica di abilitazione e disabilitazione.
1. Inizia inserendo le caselle di controllo nel punto in cui desideri applicare la selezione singola. Per questa soluzione, devi utilizzare le caselle di controllo ActiveX, poiché quelle dei Controlli modulo non supportano direttamente il meccanismo di abilitazione/disabilitazione. Per inserire le caselle di controllo ActiveX, vai alla scheda Sviluppo > Inserisci > Controlli ActiveX > Casella di Controllo. Disponi tutte le caselle di controllo all’interno del gruppo desiderato, come mostrato di seguito:

2. Premi contemporaneamente Alt + F11 per aprire la finestra di Microsoft Visual Basic, Applications.
3. Nella finestra dell’editor, fai clic su Inserisci > Modulo classe. Questo passaggio crea un nuovo modulo classe, necessario per gestire gli eventi di più caselle di controllo. Grazie a un modulo classe, puoi rispondere in modo individuale al clic su ciascuna casella, indipendentemente dal numero totale di caselle presenti.

4. Individua il nuovo modulo classe nel riquadro Proprietà (solitamente a sinistra), fai clic su di esso e, nella casella Nome, rinominalo dal valore predefinito (ad esempio Classe1) in ClsChk. Quindi copia e incolla il codice seguente nella finestra del modulo classe. Fai riferimento all’immagine seguente:

Codice VBA 1: Seleziona 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, fai clic su Inserisci > Modulo per aggiungere un modulo standard. Copia e incolla il seguente codice nella finestra del modulo: questo codice inizializzerà e «collegherà» tutte le tue caselle di controllo al gestore eventi definito in precedenza.
Codice VBA 2: Seleziona 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. Premi F5 per eseguire il codice, che attiva la logica di selezione singola per il tuo gruppo di caselle di controllo. Prova il comportamento selezionando una qualsiasi delle caselle: tutte le altre verranno immediatamente deselezionate e disabilitate. Deselezionando la tua selezione corrente, tutte le caselle verranno nuovamente abilitate, consentendoti di effettuare una scelta diversa.

Nota: Se aggiungi o rimuovi caselle di controllo dal tuo gruppo, dovrai rieseguire il codice VBA di inizializzazione. Questo perché i gestori degli eventi vengono aggiornati ogni volta che il codice viene eseguito, garantendo che eventuali modifiche al gruppo di controlli siano correttamente riconosciute dal tuo codice VBA.
I vantaggi di questo metodo includono la completa automazione: gli utenti non possono selezionare accidentalmente più opzioni. Tuttavia, funziona esclusivamente con i controlli ActiveX, che potrebbero essere limitati dalla versione di Excel, e richiede l’abilitazione delle macro. Inoltre, la distribuzione di cartelle di lavoro contenenti controlli ActiveX o macro ad altri utenti potrebbe richiedere autorizzazioni di sicurezza aggiuntive.
Articoli correlati:
- Come filtrare i dati in base a una casella di controllo in Excel?
- Come nascondere una casella di controllo quando la riga corrispondente è nascosta in Excel?
- Come evidenziare una cella o una riga in Excel utilizzando una casella di controllo?
- Come creare un elenco a discesa con più caselle di controllo in Excel?
- Come si fa a inserire automaticamente una data in una cella quando si seleziona una casella di controllo in Excel?
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 oltre 300 funzionalità avanzate per aumentare la produttività e Risparmia tempo.Clicca qui per ottenere la funzionalità di cui hai più bisogno...
Office Tab Porta l'interfaccia a schede in Office e rende il tuo lavoro molto più semplice
- Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Apri e crea più documenti in nuove schede all’interno della stessa finestra, invece che in finestre separate.
- Aumenta la tua produttività del 50 % e risparmia centinaia di clic del mouse ogni giorno!
Tutti i componenti aggiuntivi di Kutools in un unico programma di installazione.
Kutools for Office è la suite che include componenti aggiuntivi per Excel, Word, Outlook e PowerPoint, oltre a Office Tab Pro: la soluzione ideale per i team che lavorano su diverse app di Office.
- Suite completa— componenti aggiuntivi per Excel, Word, Outlook e PowerPoint + Office Tab Pro
- Un unico programma di installazione, una sola licenza— configurazione in pochi minuti (pronto per MSI)
- Funziona meglio insieme— produttività ottimizzata tra le app di Office
- Prova gratuita di 30 giorni con tutte le funzionalità— nessuna registrazione, nessuna carta di credito
- Miglior rapporto qualità-prezzo— risparmia rispetto all’acquisto dei singoli componenti aggiuntivi