Excel / VBA - Come creare più checkbox

Excel / VBA - Come creare più checkbox

In questo articolo imparerai come creare checkbox che sono automaticamente collegate a determinate celle. VBA non consente la creazione di più checkbox contemporaneamente. È possibile collegare manualmente caselle di controllo a celle specifiche (Copia / Incolla). Per ogni copia della tua casella di controllo devi selezionare una cella. Questo è un compito piuttosto noioso!

Iniziare

Il tipo di controllo

  • Esistono due tipi di checkbox in Excel: moduli e controlli ActiveX. In questo articolo, useremo il tipo di modulo.

Evita di ingombrare il tuo foglio di Excel con troppi oggetti

  • Excel non gestisce sempre una pagina disordinata (display), soprattutto se si intende utilizzare una cartella di lavoro su più versioni di Excel.

Creare le caselle di controllo

Per ognuna delle tue caselle di controllo, ci saranno due celle importanti:
  • La cella di posizione : quella che disegneremo la nostra casella di controllo.
  • La cella collegata : quella in cui restituiremo il risultato della nostra casella di controllo.
  • Nota che in questo esempio la cella di posizione e la cella collegata sono uguali. Selezionando o deselezionando questa casella si restituirà VERO o FALSO nella cella collegata. Purtroppo Excel non offre la possibilità di impostare più checkbox. Ci sono due possibili soluzioni per superare questa limitazione:

Soluzione 1

Questo semplice codice VBA quando (manualmente) attivato, genererà le caselle di controllo insieme alle celle collegate.

Il codice

  • Dalla cartella di lavoro, premere ALT + F11 per accedere all'editor VBA.
  • Clicca su Inserisci> Modulo .
  • Copia e incolla il seguente codice:

 Option Explicit Sub Inserer_Cases_a_cocher_Liees () Dim rngCel As Range Dim ChkBx As CheckBox per ogni rngCel In Selection With rngCel.MergeArea.Cells If .Resize (1, 1) .Address = rngCel.Address Quindi 'Pour ne pas afficher la valeur de la cellule liée, enlevez l'apostrofo en début de ligne suivante: '.NumberFormat = ";;;" Imposta ChkBx = ActiveSheet.CheckBoxes.Add (.Left, .Top, .Width, .Height) Con ChkBx 'valeur par défaut: .Value = xlOff' pourrait être Vero o falso 'cellule liée .LinkedCell = rngCel.MergeArea.Cells. Indirizzo "Texte de remplacement" .Characters.Text = "TITI" 'texte' .Text = "Toto" 'ou: .Caption = "Toto"' bordure: Con .Border 'Style de ligne' .LineStyle = xlLineStyleNone 'ou xlContinuous 'ou xlDashDot ou xlDashDotDot ou xlDot' couleur '.ColorIndex = 3' 3 = rouge 'épaisseur du trait' .Peso = 4 Fine Con 'accessibles aussi les propriétés .Locked, .Name, .Enabled ecc ... End With End If End With Next rngCel End Sub 

Per utilizzare questo codice:

Da qualsiasi foglio della tua cartella di lavoro:
  • Seleziona l'intervallo di celle in cui desideri inserire le caselle di controllo,
  • Premi Alt + F8 .
  • Seleziona il modulo e clicca su Esegui .

Soluzione 2

In questo esempio useremo l'evento Worksheet_SelectionChange come trigger.

Questo evento eseguirà automaticamente il codice ogni volta che selezioni una cella (entro un determinato intervallo).

Il codice proposto passerà in rassegna tutte le celle da un intervallo selezionato e se la cella si trova nel carattere "Wingdings", inserirà una casella di controllo.

Il codice

Per inserire questo codice:
  • Apri il foglio di tua scelta.
  • Fare clic con il tasto destro sulla scheda del foglio> Visualizza codice .
  • Copia e incolla il seguente codice:

 Opzione Explicit Private Sub Worksheet_SelectionChange (ByVal Target As Range) 'Restriction de la plage. Pour une feuille entière mettez une apostrophe en début de la ligne suivante Se Intersect (Unione ([A2: A10], [D2: D10]), Obiettivo) non è Nulla Quindi Esci Sottopassaggio A2: A10; D2: D10 Se Obiettivo. Count = 1 O Target.MergeCells Then If Target.Font.Name = "Wingdings" Then With Target "cella" liée ".Value = Abs (.Range (" A1 "). Value - 1) .NumberFormat =" "" þ ""; Generale; "" o ""; @ "Application.EnableEvents = False .Range (" A1 "). Offset (, 1) .Seleziona Application.EnableEvents = True End With End If End If End Sub 

Per utilizzare questo codice:

  • Seleziona l'intervallo di celle.
  • Applica il carattere di Wingdings.
  • Fare clic in qualsiasi punto del foglio di lavoro e quindi su ciascuna delle celle selezionate in precedenza.

Utilizzo del codice con un foglio di lavoro / foglio protetto

 ActiveSheet.Protect "admin" "admin = votre mot de passe" METTI IL TUO CODICE QUI ActiveSheet.Unprotect "admin" 

Se il tuo foglio è protetto, dovrai rimuovere la protezione dal codice. Questo può essere ottenuto usando il seguente codice:

Articolo Precedente Articolo Successivo

I Migliori Consigli