Obbligare lo spostamento delle celle verso l’alto in occasione dell’eliminazione di un intervallo

Christian ha, al lavoro, un grande foglio di lavoro che include diverse macro. Una di queste elimina un blocco di celle e sposta il resto verso l’alto. A volte, però, gli utenti non utilizzano la macro e, invece, cancellano manualmente il blocco. Sarebbe un disastro se l’eliminazione spostasse le celle a sinistra anziché in alto. Christian si chiede se c’è un modo per imporre lo spostamento verso l’alto delle celle e precludere il movimento manuale delle celle a sinistra.

Come per molte cose in Excel, ci sono diversi modi per affrontare questo problema. Non posso andare troppo nei dettagli, poiché qualsiasi approccio selezionato alla fine dipenderà dalla natura delle informazioni nel foglio di lavoro e da ciò che si desidera consentire o non consentire. Le sezioni seguenti, tuttavia, possono fornire la chiave di cui hai bisogno per scegliere l’approccio più adatto a te.

 

Proteggere il foglio di lavoro

Un approccio semplice (ed efficace) consiste nel progettare il foglio di lavoro in modo che possa essere protetto. Ovviamente, dovresti assicurarti che tutte le celle in cui l’utente deve inserire le informazioni non siano protette. Può essere direttamente la tua macro ad assicurarsi che quando il foglio di lavoro viene attivato, sia protetto. Ciò preclude la possibilità che l’utente elimini manualmente qualsiasi cella dal foglio di lavoro.

Ciò significa che se è necessario eliminare l’intervallo di celle, l’utente è costretto (dalla protezione) a selezionare la macro per l’eliminazione. La macro può quindi annullare la protezione del foglio di lavoro, eliminare l’intervallo di celle e proteggerlo nuovamente.

 

Intercettare le eliminazioni

Un altro approccio basato su macro consiste nell’utilizzare l’evento BeforeDelete per controllare ciò che accade effettivamente. Quello che segue è un semplice gestore di eventi che potrebbe essere la base di ciò che userai effettivamente:

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)

Il gestore eventi confronta semplicemente l’intervallo che si desidera eliminare solo verso l’alto con l’intervallo che l’utente ha selezionato per l’eliminazione. Se gli intervalli sono gli stessi, il gestore elimina l’intervallo e lo sposta verso l’alto. Dovresti, ovviamente, modificare l’intervallo assegnato alla variabile delRng in modo che corrisponda all’intervallo che desideri monitorare.

 

Rimappare il tasto Canc

A proposito di eliminazione, puoi anche rimappare il tasto Canc in modo che faccia quello che vuoi. Tutto quello che devi fare è includere una macro come la seguente nel modulo di codice di Questa_cartella_di_lavoro:

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)

Ciò significa che quando la cartella di lavoro viene aperta, il tasto Canc viene rimappato in modo che ogni volta che viene premuto, MyMacro (modificalo in qualsiasi macro desideri) venga eseguita automaticamente.

Si noti che questo approccio riguarda solo la pressione del tasto Canc; non influisce sulle eliminazioni effettuate in altro modo. Per quei casi, le tue macro dovrebbero comunque anticipare e gestire la logica.

 

L’approccio completo

Questo ci porta all’approccio completo. Questo approccio significa semplicemente fare un elenco di tutti i vari modi in cui l’utente potrebbe avviare un’eliminazione e quindi intercettare tali modi. L’elenco (e le intercettazioni) dovrebbero necessariamente includere alcuni degli approcci già discussi, come la gestione del tasto Canc. Dovresti anche capire come disabilitare o modificare cosa succede quando l’utente fa clic con il pulsante destro del mouse o quando l’utente seleziona un’opzione di eliminazione dalla barra multifunzione (potresti anche voler rimuovere le opzioni relative all’eliminazione dall’interfaccia utente).

Questo approccio può essere piuttosto lungo, poiché un elenco esaustivo di metodi di eliminazione potrebbe essere laborioso da mettere insieme e gestire.

Tags: , , , , , , , ,

Ti è stato utile?