Mille caselle di controllo???
Io farei delle finte caselle di controllo tramite un bordo sulle caselle B1:B1000 (per esempio); poi con una macro commuterei il valore della stessa cella tra 1 e 0 (alternativamente) tutte le volte che la seleziono; volendo posso “visualizzare” il segno di “spuntato” tramite la seguente formattazione:
-tipo di carattere: webdings
-Formato /Celle, tab Numero, categoria Personalizzato, come Tipo digiti “[Nero]"a";0.0##;"-";_(@_)” (senza le virgolette
(se invece vuoi visualizzare X, come font metti uno standard e come Tipo userai “[Nero]"X";0.0##;"-";_(@_)”)
La macro che fa cio’ e la seguente:
- Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CheckArea = "B1:B1000" '<<<<< Vedi nota
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
Application.EnableEvents = False
If Selection.Value <> 0 Then
Selection.ClearContents
Else: Selection.Value = 1
End If
ActiveCell.Offset(0, 1).Select
End If
Application.EnableEvents = True
End Sub
Nota: modifica l’ istruzione marcata <<<< a seconda di quale e’ l’ area utilizzata dai finti checkboxes.
Va inserita sul "foglio" su cui lavori: tasto dx sul tab del nome foglio, scegli "visualizza codice, incolli le istruzioni sul frame vuoto di dx (se non fosse vuoto, controlla che non esista gia' una macro intitolata Sub Worksheet_SelectionChange).
Se proprio vuoi procedere con i chek box, allora io li compilerei con una macro. Esempio questa:
- Codice: Seleziona tutto
Sub CboxMaker()
I = 1
For Each cbcell In Range("B1:B10") '<<<<< Area in cui inserire Check Box
cbcell.select
plotx = Selection.left
ploty = Selection.top
Activesheet.Checkboxes.Add(plotx, ploty, 60, 18).Select
With Selection
.Value = xloff
.Linkedcell = Activecell.Offset(0, -1).Address
.Display3Dshading = False
.Characters.Text = "CB-" & I
End With
I = I + 1
Next cbcell
End Sub
(modificare l’ istruzione <<<< con l’ effettivo range che si vuole riempire con check box).
La macro compila ogni cella del range definito con un checkbox a cui assegna il nome CB-n (CB-1, CB-2, etc; eventualmente modifica l' istruzione .Text) e a cui associa come cella di controllo quella adiacente a sx (il che comporta che il range dei checkbox non puo’ essere in colonna A; non con queste istruzioni).
Se vuoi eliminare TUTTI i check box da un foglio che gia’ hai compilato, allora potresti usare questa macro, DOPO AVER FATTO un paio di copie di backup del tuo file:
- Codice: Seleziona tutto
Sub CBCancel()
'
ZZ = Activesheet.Shapes.Count
'For I = 1 To Activesheet.Shapes.Count
For I = 1 To 500
On Error GoTo Skip
Activesheet.Shapes(I).Select
'AZZ = Selection.Name
'aaa = Selection.Topleftcell.Address
If (Left(Selection.Name, 9) = "Check Box") Then Selection.Delete
Procedi:
Next I
Exit Sub
Skip:
Resume Procedi
End Sub
Questa non e’ assolutamente ottimizzata (vedi le tante righe commentate), e potrebbe essere necessario lanciarla piu’ volte per eliminare tutti i checkbox (ma non le relative celle di controllo, che possono essere cancellate col comando Cancella).
Dovresti avere sufficienti elementi su cui lavorare; o no?
Ciao.