Come consentire la selezione di una sola casella di controllo in un gruppo in Excel?
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.
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:
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.
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:
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.
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:
- 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 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!