Skip to main content

Come consentire la selezione di una sola casella di controllo in un gruppo in Excel?

Author: Siluvia Last Modified: 2025-05-29

Come mostrato nello screenshot sottostante, per un gruppo di caselle di controllo elencate nella riga 2, quando si seleziona o si controlla una casella, tutte le altre vengono automaticamente disabilitate. Come si può ottenere ciò? Il codice VBA in questo articolo può aiutarti.

A screenshot of a group of checkboxes in Excel where only one can be selected at a time

Consentire la selezione di una sola casella di controllo con il codice VBA


Consentire la selezione di una sola casella di controllo con il codice VBA

È possibile eseguire i seguenti codici VBA per selezionare una sola casella di controllo in un gruppo alla volta. Si prega di procedere come segue.

1. Innanzitutto, inserisci le caselle di controllo secondo necessità. Qui, dovresti inserire le caselle di controllo ActiveX Control come mostrato nello screenshot seguente:

A screenshot showing the insertion of ActiveX Control checkboxes in Excel

2. Quindi premi contemporaneamente i tasti Alt + F11 per aprire la finestra Microsoft Visual Basic for Applications.

3. Nella finestra Microsoft Visual Basic for Applications aperta, clicca su Inserisci > Modulo di Classe.

A screenshot showing the option to insert a Class Module in Excel VBA

4. Cambia il nome della classe in ClsChk nella casella (Nome) del riquadro Proprietà, quindi copia e incolla il seguente codice VBA nella corrispondente finestra Codice. Vedi screenshot:

A screenshot of the Properties pane in VBA for renaming the class to ClsChk

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. Ora clicca su Inserisci > Modulo, poi copia e incolla il seguente codice VBA nella finestra Modulo.

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. Premi il tasto F5 per eseguire il codice.

Da ora in poi, quando si controlla una delle caselle di controllo nel foglio di lavoro, tutte le altre caselle di controllo verranno automaticamente disabilitate e sarà possibile deselezionarla per riattivare tutte le caselle di controllo.

A screenshot of checkboxes in Excel where only one is enabled at a time after VBA code execution

Nota: Se viene aggiunta una nuova casella di controllo al gruppo, è necessario rieseguire il codice VBA per riattivare tutte le caselle di controllo. Anche l'eliminazione di una casella di controllo dal gruppo richiede di rieseguire il codice.


Articoli correlati:

I migliori strumenti per la produttività in Office

🤖 Kutools AI Aide: Rivoluziona l'analisi dei dati grazie a: Esecuzione Intelligente | Genera Codice | Crea Formule Personalizzate | Analizza Dati e Genera Grafici | Richiama Funzioni avanzate di Kutools
Funzionalità popolari: Trova, evidenzia o contrassegna duplicati | Elimina righe vuote | Unisci colonne o celle senza perdere dati | Arrotonda...
Super RICERCA.VERT: Ricerca VERT con criteri multipli | Ricerca VERT con valori multipli | Ricerca su più fogli | Corrispondenza approssimativa...
Elenco a discesa avanzato: Crea rapidamente un elenco a discesa | Elenco a discesa dipendente | Elenco a discesa multi-selezione...
Gestione Colonne: Aggiungi un numero specifico di colonne | Sposta colonne | Attiva/disattiva la visibilità delle colonne nascoste | Confronta intervalli e colonne...
Funzionalità in evidenza: Attenzione della griglia | Visualizzazione di progettazione | Barra delle formule avanzata | Gestione Cartella di lavoro e Foglio di lavoro | Libreria AutoText | Selettore di data | Unisci dati | Crittografa/Decrittografa celle | Invia Email tramite elenco | Super Filtri | Filtro speciale (filtra grassetto/corsivo/barrato...) ...
Top15 set di strumenti:12 strumenti di testo (Aggiungi testo, Elimina Caratteri Specifici, ...) | Oltre50 tipi di grafici (Diagramma di Gantt, ...) | Oltre40 formule pratiche (Calcola l'età in base alla data di nascita, ...) |19 strumenti di inserimento (Inserisci codice QR, Inserisci Immagine da percorso, ...) |12 strumenti di conversione (Converti in parole, Conversione valuta, ...) |7 strumenti di unione e divisione (Unione avanzata righe, Dividi celle, ...) | ... e molto altro

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 risparmiare tempo. Clicca qui per ottenere la funzione 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 della stessa finestra, invece che in nuove finestre.
  • Aumenta la tua produttività del50% e riduce centinaia di clic del mouse ogni giorno!