Flag automatico su checkbox



  • Flag automatico su checkbox
    di Giulia (utente non iscritto) data: 11/11/2013 12:29:09

    Ciao ragazzi

    Chiedo a voi esperti una soluzione al mio dilemma. Ho due fogli excel Foglio 1 e foglio 2.

    Sul foglio 2 ci sono delle checkbox (30 in totale). Vorrei collegare il flag della check box automaticamente se sul foglio uno alla cella a1 è presente un valore >1.

    Avete qualche idea se è possibile farlo?
    Grazie



  • di totygno71 (utente non iscritto) data: 11/11/2013 13:27:33

    Si certo...
    ma in funzione di cosa cambiano i valori in A1?



  • di totygno71 (utente non iscritto) data: 11/11/2013 13:28:55

    Nel senso che tutti e 30 devono essere collegati al valore di A1? In A1 c'è una formula? Se si a cosa punta???



  • di Giulia (utente non iscritto) data: 11/11/2013 13:35:08

    In A1, scelta x comodità la cella A1, Vi e' un collegamento ad un risultato di operazioni di un'altra cella. Non devono tutte le checkbox essere collegate ad A1 ma solo una check box. Casomai poi il codice me lo studio e lo duplicò per le altre celle e checkbox.

    Comunque grazie per l'interessamento!!!



  • di totygno71 (utente non iscritto) data: 11/11/2013 13:58:46

    Allora se è per studiare:
    Prova e poi facci sapere_
     
    'Questo codice ogni volta che attivi il foglio2 controlla il valore di A1 del foglio1, se questo è maggiore di 1 mettera il flag sulla checkbox1 altrimenti (se minore o uguale a 1) non lo mettera
    Private Sub Worksheet_Activate()
    
    If Sheets("Foglio1").Range("A1").Value > 1 Then
        
        CheckBox1.Value = True
        Else
        CheckBox1.Value = False
        
    End If
    
    End Sub



  • di Giulia (utente non iscritto) data: 11/11/2013 14:31:06

    Ciao totygno

    Grazie mille per la risposta, ho inserito il tuo codice in un modulo in vba di excel. e ho cambiato i riferimenti delle celle al numero di checkbox. All'avvio della macro (tramite comando start in vba) mi spunta fuori l'errore errore RunTime '424': Necessario oggetto. E la parte del codice "CheckBox1.Value = True" è evidenziata.

    Ho un dubbio che mi assilla, giusto per non prendere un granchio, la check box che ho inserito nel foglio è nominata da excel Casella di controllo 129. La ho inserita tramite menù "casella di controllo activex".

    Quindi ho cambiato il codice che mi hai fornito in questo modo ma il risultato non cambia. Forse ho sbagliato a nominare la checkbox?

    Grazie ancora, gentilissimo e disponibilissimo!
     
     Private Sub Worksheet_Activate()
    
    If Sheets("Foglio1").Range("A1").Value > 1 Then
        
        CheckBox129.Value = True
        Else
        CheckBox129.Value = False
        
    End If
    
    End Sub



  • di totygno71 (utente non iscritto) data: 11/11/2013 14:48:03

    Il codice va inserito nell'evento activate del foglio in cui ci sono le checkbox



  • di Giulia (utente non iscritto) data: 11/11/2013 15:30:27

    Ci ho messo un bel pò per cercare di capire come inserirlo nell'evento activate... Adesso sono riuscita a inserirlo in Worksheet activate. Quando infatti mi sposto tra il foglio1 e foglio2 la macro si attiva, però il codice d'errore rimane.
    "Necessario oggetto" e si evidenzia la stringa che riporta la dicitura: "CheckBox129.Value = True"



  • di Grograman (utente non iscritto) data: 11/11/2013 15:55:58

    Mancano il file di esempio, ma ancora prima la paternità dell'oggetto:

     
     Private Sub Worksheet_Activate()
    
    If Sheets("Foglio1").Range("A1").Value > 1 Then
        
        Userform1.CheckBox129.Value = True
        Else
        userform1.CheckBox129.Value = False
        
    End If
    
    End Sub



  • di Grograman (utente non iscritto) data: 11/11/2013 15:56:50

    Scusa ho visto ora che le checkbox sono nel foglio.


     
    me.CheckBox129.Value 



  • di Giulia (utente non iscritto) data: 11/11/2013 15:58:54

    Ciao totygno

    Credo di aver risolto, o aggirato il problema.

    Ho collegato la checkbox ad una cella in modo tale che se flaggata nella cella appare la dicitura "vero" e "falso" quando non lo è. Ho utilizzato il codice che mi hai fornito e lo ho modificato. In questo modo scrivo nella cella collegata alla checkbox il valore TRUE o False e conseguentemente la checkbox si flagga o meno. Adesso che in parte il problema è risolto volevo capire dove ho sbagliato con il tuo codice.....
    Grazie Mille!!!!!

     
    Private Sub Worksheet_Activate()
    If Sheets("Foglio1").Range("A1").Value > 1 Then
        
        Range("D3").Select
        ActiveCell.FormulaR1C1 = "True"
        Else
        ActiveCell.FormulaR1C1 = "False"
        
    End If



  • di Giulia (utente non iscritto) data: 11/11/2013 16:50:44

    Ciao grograman

    grazie per l'interessamento ho appena visto adesso la tua risposta...

    ho provato il codice che mi hai proposto, all'avvio della macro la stessa si blocca dando un'errore e si evidenzia la dicitura CheckBox129.Value



  • di totygno (utente non iscritto) data: 11/11/2013 21:44:08

    Giulia
    sei certa che CheckBox129 sia il "Name" della checkbox e non la "Caption"???



  • di Grograman (utente non iscritto) data: 12/11/2013 08:42:13

    Oppure ha usato dei controlli di modulo e non dei controlli activex, ma insisto nel dire che manca un file di esempio.


     
    Codice perfettamente funzionante:
    
    
    Option Explicit
    Private Sub CommandButton1_Click()
      Me.CheckBox1 = 1
      Me.CheckBox2 = 0
    End Sub
    



  • di Giulia (utente non iscritto) data: 12/11/2013 11:20:53

    Ciao totygno e grograman

    totygno rispondendo alla tua domanda, il nome della checkbox in questo caso 129 lo ho scoperto cliccando sopra di essa con il tasto destro del mouse e poi su assegna macro. Il programma mi ha intitolato la macro con il nome "Caselladicontrollo129_Click".
    Quindi presumo sia il suo nome....

    Per Grograman, la casella di controllo la ho creata mediante il menu controlli activex. Per file di esempio cosa intendi? devo allegarti il mio file con tutti i dati o ne creo uno exnovo per smanettarci sopra?



  • di Grograman (utente non iscritto) data: 12/11/2013 11:52:14

    Cit: "la casella di controllo la ho creata mediante il menu controlli activex"

    Non coincide con:

    Cit: "tasto destro del mouse e poi su assegna macro"

    Tu hai messo un controllo di modulo, non un controllo activex.



  • di Grograman (utente non iscritto) data: 12/11/2013 12:02:14


     
     Me.Shapes("Check Box 1").ControlFormat = 0
     Me.Shapes("Check Box 1").ControlFormat = 1