sto utilizzando Excel 2010 per fare un piccolo programmino che gestisca consumi, km, costi del carburante e quant'altro per le macchine che ho in famiglia.
Non è il classico foglio elettronico 'sterile' coi dati immessi dall'umano, che rimangono lì, statici e inerti, bensì un vero e proprio foglio dinamico che interagisce con l'utente; praticamente, inserendo, ad esempio, i litri di carburante immessi all'ultimo pieno, i km effettuati e il costo al litro del carburante, lui da solo aggiorna continuamente tutta la situazione, grafici compresi (in un foglio accanto, ci sono 4 tabelle di grafici, ognuna delle quali illustra l'andamento di un parametro nel corso del tempo), fornendo quindi, media dei consumi, dei litri, delle variazioni del costo del carburante durante l'anno e quant'altro.
Insomma una cosa molto carina e sopratutto utile e pratica, in quanto è completamente automatica.
Oltre a ciò, ho inserito un po' di pulsanti programmati in VBA ovviamente che, una volta cliccati, eseguono, ognuno, una propria mansione.
Bene, uno di questi, è l'inserimento, tramite l'interazione di uno di questi pulsanti, del nominativo del proprietario del mezzo, a chi è intestato, e quant'altro; una volta che i dati vengono immessi, lo script provvede autiomaticamente ad immetterli nelle celle di competenza dove sono presenti delle formule che hanno dei compiti ben precisi.
Il problema nasce proprio qui: poiché, per ovvi motivi, ho dovuto bloccare tutte le celle comprendenti formule e riferimenti al codice VBA, in modo da evitare la cancellazione/modifica accidentale da parte degli utenti che useranno questo programma, quando vengono inseriti i parametri richiesti, tramite finestra di dialogo, Excel tenta di inserirli nelle celle di competenza, ma mi si presenta un errore di runtime (o il 13 o il 1004, adesso non ricordo con esattezza), facendomi capire che essendo le celle bloccate, non riesce ad inserire i dati nelle celle stesse.
L'unico modo per permettere ciò è sbloccare le celle in maniera permanente, rendendo così tutto il programma (e le celle stesse) vulnerabili agli errori (accidentali e non) degli utenti, con le ovvie conseguenze.
A questo proposito, mi chiedevo se esistesse un metodo per mantenere bloccate le celle, e dando la possibilità ad Excel di scriverci dentro, bypassando la protezione di cui dispongono, che a dirla tutta, dovrebbe essere rivolta SOLO all'interazione con l'essere umano.
Avevo provato ingenuamente ad inserire nel codice VBA, al posto giusto, il paramtero di sblocco del foglio, per poi riattivarlo in automatico a dati già scritti:
- Codice: Seleziona tutto
ActiveSheet.protect = True
E funzionerebbe anche, se non fosse che giustamente al momento del tentativo di sblocco, richiede la password di protezione, rendendo tutto inefficace, in quanto l'utente dovrebbe conoscerla, e quindi non avrebbe più senso il lavoro.
Un'ultima domanda, tecnica: sapreste spiegarmi la differenza fra i moduli e i controlli ActiveX, presenti nella barra degli elementi di Excel, nella finestra Sviluppo; magari un esempio pratico, in quanto ho letto su Internet, ma le spiegazioni sono solo teoriche.
Spero di aver posto la domanda in maniera comprensibile, confidando nella vostra poderosa competenza.
Grazie mille a tutti.