Matteo osserva che un utente può facilmente fare clic con il pulsante destro del mouse su una scheda del foglio di lavoro e quindi spostare o copiare il foglio di lavoro in un’altra cartella di lavoro. Sta cercando un modo per prevenire questo comportamento: ha bisogno di un modo per impedire a un utente di creare una copia di un foglio di lavoro o spostarlo.
Questo è più difficile di quanto si potrebbe, in un primo momento, pensare. L’approccio standard consiste nel proteggere la cartella di lavoro (utilizzando lo strumento Proteggi cartella di lavoro nella scheda Revisione della barra multifunzione). A condizione di proteggere la struttura, Excel disabiliterà l’opzione Sposta o copia foglio.
Forse, per qualche motivo, non vuoi proteggere la cartella di lavoro. In tal caso puoi creare delle soluzioni basate su macro che potrebbero fare al caso tuo. Ad esempio, supponiamo di avere una macro nel modulo di codice per il foglio di lavoro stesso. Potresti fare in modo che quella macro, come parte del suo funzionamento, verifichi la presenza di altri dati nella cartella di lavoro o in qualche variabile di sistema (i dati dovrebbero essere esterni al foglio di lavoro, ma ancora nella cartella di lavoro). Quando venisse rilevata la presenza, tutto funzionerebbe come vorresti.
Se, tuttavia, l’utente copia o sposta il foglio di lavoro in un’altra cartella di lavoro, ovviamente gli altri dati o variabili non saranno presenti. Se la tua macro (che è stata spostata con il foglio di lavoro) non rileva i dati richiesti, la macro potrebbe eseguire qualsiasi azione ritieni appropriata, inclusa l’eliminazione del foglio di lavoro.
Un diverso approccio basato su macro consisterebbe nell’utilizzare due eventi per il foglio di lavoro, in questo modo:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Questi due gestori di eventi proteggono semplicemente la cartella di lavoro ogni volta che viene selezionato il foglio di lavoro e, al contrario, la sproteggono quando viene selezionato un foglio di lavoro diverso. Perché farlo? Per il motivo menzionato in precedenza, la protezione della cartella di lavoro può disattivare la possibilità di spostare o copiare fogli di lavoro. Poiché l’utente deve sempre selezionare il foglio di lavoro prima di copiarlo o spostarlo, queste azioni sono disabilitate perché entrano in gioco i gestori di eventi.
Ricorda, tuttavia, che se il tuo obiettivo è impedire all’utente di copiare i dati e/o le formule sul foglio di lavoro, devi pensare oltre: l’utente potrebbe sempre copiare il contenuto della cella dal foglio di lavoro a un foglio di lavoro diverso, il che potrebbe vanificare ciò che stai tentando di fare.