Aiutamici Forum
Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

Inserimento dati in una cella protetta? Opzioni
usag
Inviato: Saturday, January 11, 2014 10:44:34 PM
Rank: AiutAmico

Iscritto dal : 7/7/2007
Posts: 220
Salve a tutti,
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:

Code:
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.
Sponsor
Inviato: Saturday, January 11, 2014 10:44:34 PM

 
a10n11
Inviato: Sunday, January 12, 2014 10:23:46 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
hai due possibilità:
1) disabilitare la protezione del foglio inserendo nella macro l'istruzione per sbloccare il foglio salvo poi reimmettere la protezione
alla fine della macro.
2) la soluzione più elegante, è quella di impostare la proprietà " userinterfaceonly" che consente alla macro di operare sul foglio ma mantiene blloccate le celle per l'utente.
devi modificate l'istruzione ActiveSheet.Protect
in questo modo:
ActiveSheet.Protect , userinterfaceonly:=True
saluti
Giap


usag
Inviato: Sunday, January 12, 2014 1:33:03 PM
Rank: AiutAmico

Iscritto dal : 7/7/2007
Posts: 220
Ciao a10n11,
non sapevo di questa proprietà (ho cominciato da poco a interagire col VBA, sono abituato al Python).
Ok, proverò come hai detto, oggi pomeriggio.
Grazie!
usag
Inviato: Sunday, January 12, 2014 7:23:26 PM
Rank: AiutAmico

Iscritto dal : 7/7/2007
Posts: 220
Allora, ho messo in pratica come mi hai suggerito, ma non dà l'effetto desiderato, nel senso che dopo aver chiesto i dati da inserire, chiede all'utente la password di protezione, che ovviamente lui non deve assolutamente conoscere, altrimenti si vanifica tutto il lavoro, se è in grado di manipolare fogli, codice e quant'altro.
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.