CANCELLARE O SPUNTARE DIVERSE CASELLE DI CONTROLLO CON UN TASTO UNICO

Anonimo
2018-01-11T16:05:02+00:00

Buongiorno,

mi trovo con 4 colonne di cui ognuna ha 20 celle con inserito una casella di controllo (controllo modulo)

Sia per spuntarle o disattivarle una alla volta diventa molto dispersivo, chiedo se è possibile disattivarle ed eventualmente spuntarle tutte insieme con un tasto unico

Grazie

Marco

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2018-01-13T01:16:30+00:00

Ciao Marco,

Sì ogni casella deve corrispondere a quelle del foglio Formule

Riguardo il nome non ha rilevanza, l'importante che se la spunto mi da il risultato di vero nel foglio Formule, altrimenti devo cambiare tutte le formule presenti nella cartella

Ho cancellato tutte le caselle di controllo sul foglio CALCOLO e ho utilizzato la procedura Inserisci_CheckBoxes per crearne 280.

Come richiesto. ho anche modificato il mio codice in modo che si possa inserisce, o cancellare, il segno di spunta solo dalle caselle di controllo della selezionata colonna.

Quindi, in un modulo standard, incolla le seguente due procedure:

'=========>>

Option Explicit

'--------->>

Public Sub Inserisci_CheckBoxes()

    Dim SH As Worksheet, SH2 As Worksheet

    Dim CBox As CheckBox

    Dim Rng As Range, rCol As Range, rCell As Range

    Dim i As Long

    Const sFoglio As String = "Calcolo"                                    '<<=== Modifica

    Const sFoglio2 As String = "Formule"                                '<<=== Modifica

    Const sIntervallo As String = "K12:M51, V12:X51"          '<<=== Modifica

    With ThisWorkbook

        Set SH = .Sheets(sFoglio)

        Set SH2 = .Sheets(sFoglio2)

    End With

    On Error GoTo XIT

    Application.ScreenUpdating = False

    With SH

        .CheckBoxes.Delete

        Set Rng = .Range(sIntervallo)

        For Each rCol In Rng.Columns

            For Each rCell In rCol.Cells

                i = i + 1

                With rCell

                    Set CBox = .Parent.CheckBoxes.Add _

                               (Top:=.Top, Width:=.Width, _

                                Left:=.Left, Height:=.Height)

                    With CBox

                        .Name = "CheckBox" & i

                        .LinkedCell = SH2.Range(rCell.Offset(-2).Address). _

                                                                  Address(External:=True)

                        .Caption = ""

                    End With

                    .NumberFormat = ";;;"

                End With

            Next rCell

        Next rCol

    End With

    SH.Shapes("Horizontal Scroll1").Visible = False

XIT:

    Application.ScreenUpdating = True

End Sub

'--------->>

Public Sub ToggleCheckBoxes()

    Dim sCaller As String

    Dim Btn As Button

    Dim CBox As CheckBox

    Dim iCol As Long

    sCaller = Application.Caller

    Set Btn = ActiveSheet.Buttons(sCaller)

    iCol = Btn.TopLeftCell.Column

    For Each CBox In ActiveSheet.CheckBoxes

        With CBox

            If .TopLeftCell.Column = iCol Then

                If .Value = 1 Then

                    .Value = 0

                Else

                    .Value = 1

                End If

            End If

        End With

    Next CBox

End Sub

'<<=========

La prima procedura, Inserisci_CheckBoxes, cancella ogni casella di controllo sul foglio CALCOLO poi crea una nuova collezione di 280 caselle di controllo negli intervalli K12:M51 e V12:X51 ; il codice collega le caselle di controllo alle celle degli intervalli K11:M49 e V10:X49 sul foglio FORMULE. Le nuove caselle di controllo vengono denominati CheckBox1 fino a CheckBox280.

La seconda procedura, ToggleCheckBoxes è assegnata ad ciascuno dei otto pulsanti 1-8 sopra le otto colonne di caselle di controllo. Facendo click su uno dei pulsante, si inserisce o cancella il segno di spunta dalle caselle di controllo sopra quella colonna.

A me, il tempo di esecuzione del codice viene riportato  in millisecondi; il funzionamento è effetivamnente instantaneo.

Potresti scaricare il mio file di Marco20180113.xlsm.

Provalo e vedi se faccia quello che vuoi.

===

Regards,

Norman

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

20 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2018-01-11T16:36:57+00:00

    Ciao Marco,

    mi trovo con 4 colonne di cui ognuna ha 20 celle con inserito una casella di controllo (controllo modulo)

    Sia per spuntarle o disattivarle una alla volta diventa molto dispersivo, chiedo se è possibile disattivarle ed eventualmente spuntarle tutte insieme con un tasto unico

    In un modulo standard, incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim CBox As CheckBox

        Const sFoglio As String = "Foglio1"       '<<=== Modifica

        Set WB = ThisWorkbook

        Set SH = WB.Sheets(sFoglio)

        For Each CBox In SH.CheckBoxes

            With CBox

                If .Value = 1 Then

                    .Value = 0

                Else

                    .Value = 1

                End If

            End With

        Next CBox

    End Sub

    '<<=========

    Assegna la macro ad un pulsante o una forma.

    Potresti scaricare il mio file di prova Marco201801011.xlsm

    ===

    Regards,

    Norman

    La risposta è stata utile?

    3 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2018-01-12T01:59:37+00:00

    Ciao Marco,

    In attesa della tua risposta, ho creato un piccolo file per dimostrare che, anche con 240 caselle di controllo, il codice suggerito da me funzione, sennò come una scheggia impazzita, almeno in modo che mi pare sia accettibile.

    Quindi, per inserire i 240 controlli, premi il segno di pergamena rosa

    Creando così le 240 caselle di controllo, vedrai qualcosa del genere:

    Poi, per spuntare o cancellare le caselle, premi il pulsante color crema ON/OFF.

    Potresti scaricare il mio file di prova Marco20180112.xlsm

    Come funziona il file da te?

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  3. Anonimo
    2018-01-12T00:12:02+00:00

    Ciao Marco.

    Con grande difficoltà, essendo la prima Macro che sviluppavo, non riuscivo a capire da dove si incominciava, 

    ma alla fine ce l'ho fatta.

    Riguardo la cancellazione funziona ... lentamente ma cancella tutte le caselle (240 pezzi),

    invece per lo spunto si ferma a 3/4 di lavoro e finisce.

    Pensavo ad una variante se possibile per allegerire il tutto:

    Nelle colonne K- L - M -N    V - W - X - Y  (dalla 10a alla 49a cella) sono inserite le caselle di controllo

    C'è la possibilità di fare per ogni colonna un tasto separato?

    Sul serio, 240 caselle di controllo su un foglio ... perché mai dovresti?   

    Ho messo due tonnellate di piombo nel bagagliaio della mia Maserati oggi ed è andato molto, molto lentamente - non ho idea del perché! 

    Prova a caricare il file, privo di dati sensibili su un servizio di file sharing affidabile. ad esempio DropBox o Microsoft OneDrive e vedrò se posso migliorare le cose.

     Per caricare il file su Microsoft OneDrive, vedi:

    https://support.office.com/it-it/article/Condividere-file-e-cartelle-di-OneDrive-9fcc2f7d-de0c-4cec-93b0-a82024800c07

    Nel caso di DropBox, vedi:

    https://www.dropbox.com/it/help/topics/sharing_files_and_folders

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  4. Anonimo
    2018-01-11T20:19:08+00:00

    Buonasera David,

    Con grande difficoltà, essendo la prima Macro che sviluppavo, non riuscivo a capire da dove si incominciava,

    ma alla fine ce l'ho fatta.

    Riguardo la cancellazione funziona ... lentamente ma cancella tutte le caselle (240 pezzi),

    invece per lo spunto si ferma a 3/4 di lavoro e finisce.

    Pensavo ad una variante se possibile per allegerire il tutto:

    Nelle colonne K- L - M -N    V - W - X - Y  (dalla 10a alla 49a cella) sono inserite le caselle di controllo

    C'è la possibilità di fare per ogni colonna un tasto separato?

    Grazie

    Marco

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento