Come rinominare automaticamente i fogli di lavoro

Renzo ha una cartella di lavoro che contiene dieci fogli di lavoro, denominati da “Risorse 1” a “Risorse 10”. Se elimina uno di questi fogli di lavoro (ad esempio, “Risorse 3”), Renzo vorrebbe che i fogli di lavoro rimanenti venissero rinominati, automaticamente, per “colmare il buco”, per così dire. Pertanto, i fogli da “Risorse 4” a “Risorse 10” dovrebbero venire automaticamente rinominate per diventare da “Risorse 3” a “Risorse 9”.

Ci sono diversi modi in cui puoi svolgere questa attività, tutto attraverso l’uso di macro. Un approccio è probabilmente meno automatico di quello che preferirebbe Renzo, ma funziona alla grande:

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.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

Questa macro scorre semplicemente tutti i fogli di lavoro, rinominandoli utilizzando la convenzione preferita da Renzo. La macro può essere eseguita su richiesta, ogni volta che si desidera rinominare i fogli di lavoro.

Si noti che il codice esegue effettivamente due passaggi di denominazione attraverso i fogli di lavoro. Il primo è impostare i nomi dei fogli di lavoro su nomi temporanei e il secondo è impostarli su nomi definitivi. I due passaggi aiutano a evitare un potenziale problema quando si aggiungono fogli di lavoro alla cartella di lavoro, ad esempio, se si aggiunge un nuovo foglio di lavoro appena prima di “Risorse 4”, una ridenominazione a passaggio singolo proverebbe a rinominare il nuovo foglio di lavoro come “Risorse 4”, che genererebbe un errore perché il foglio di lavoro 5, in quel momento, sarebbe anch’esso denominato “Risorse 4”. Facendo due passaggi, si rinomina tutto in qualcosa di completamente nuovo e quindi si esegue l’impostazione del nome finale.

Per un approccio più automatico, potresti prendere in considerazione l’utilizzo dell’evento SheetBeforeDelete per l’oggetto Workbook. Questo evento viene attivato (come suggerisce il nome) immediatamente prima che un foglio di lavoro venga eliminato. Ecco un esempio di approccio al gestore di eventi:

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.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

Il gestore dell’evento verifica se il foglio di lavoro eliminato inizia con il prefisso designato (“Risorse “). In tal caso, rinomina il foglio di lavoro eliminato con un nome temporaneo (“TempSheet 9999”). Quindi, passa attraverso ciascuno dei fogli di lavoro nella cartella di lavoro e rinomina qualsiasi foglio di lavoro che ha il prefisso corretto e un numero di suffisso più alto del foglio di lavoro che si sta eliminando.

Ci sono due grandi avvertimenti con questo approccio. Innanzitutto, non gestirà le aggiunte di fogli di lavoro. In secondo luogo, gestirà in modo affidabile solo la cancellazione di singoli fogli di lavoro. Se elimini più fogli di lavoro contemporaneamente, la numerazione sarà errata e, infatti, la macro potrebbe bloccarsi a causa del modo in cui Excel gestisce le eliminazioni.

Se prevedi di eliminare più fogli di lavoro abbastanza spesso, puoi aggirare il problema utilizzando un approccio diverso. Questo si basa sull’uso degli eventi SheetActivate e SheetDeactivate dell’oggetto Workbook.

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.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

Questi gestori di eventi funzionano perché l’evento SheetDeactivate viene attivato automaticamente ogni volta che viene lasciato un foglio di lavoro (ad esempio, quando si attiva un foglio di lavoro diverso) o ogni volta che ne viene eliminato uno. Viene quindi attivato l’evento SheetActivate che controlla, in sostanza, se il foglio precedentemente disattivato è raggiungibile o meno. Se non può essere raggiunto, sappiamo che è stato eliminato e possiamo attivare una ridenominazione di tutti i fogli di lavoro.

L’approccio che usi per rinominare dipende interamente da te in base a come vuoi lavorare con i tuoi fogli di lavoro.

Tags: , , , , , , , , , , , , , , , ,

Ti è stato utile?