Flag automatico su checkbox
Hai un problema con Excel? 
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.
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 |
Vuoi Approfondire?