Ottenere il nome del foglio di lavoro in una cella

Corrado ha una cartella di lavoro contenente 36 fogli di lavoro. Deve avere il nome del foglio di lavoro presente in una cella di quei fogli di lavoro. Ha creato una funzione definita dall’utente che restituisce il nome del foglio di lavoro, ma restituisce lo stesso nome su tutti i 36 fogli di lavoro, il nome di qualunque foglio di lavoro viene visualizzato quando viene eseguita la funzione definita dall’utente. Si chiede se esiste una macro, in formato funzione definita dall’utente (UDF), che possa essere utilizzata per restituire sempre il nome del foglio su cui viene utilizzata la funzione. In altre parole, nella sua cartella di lavoro di 36 fogli di lavoro, dovrebbe restituire 36 risultati diversi, a seconda del foglio di lavoro in cui viene utilizzato.

La risposta breve è sì, c’è un modo. In effetti, ci sono un paio di modi. E, cosa abbastanza interessante, non devi usare una macro o una funzione se non vuoi. Ad esempio, ecco una normale formula del foglio di lavoro che funzionerà in qualsiasi cella del foglio di lavoro:

=STRINGA.ESTRAI(CELLA("nomefile";A1);(TROVA("]";CELLA("nomefile";A1))+1);255)

 

L’istanza della funzione CELLA in questa formula restituisce il nome completo del foglio di lavoro, inclusi il nome file e il percorso del file. L’uso della funzione TROVA comporta l’eliminazione di tutto tranne il nome del foglio di lavoro.

Si noti l’uso di un riferimento di cella (A1) in ogni istanza della funzione CELLA. Ciò impone alla funzione CELLA di restituire il nome del foglio di lavoro che contiene il riferimento di cella. Senza di esso, otterrai lo stesso risultato (il primo foglio di lavoro) per ogni istanza della formula.

Dovresti anche sapere che la formula non restituirà risultati validi se la usi in una nuova cartella di lavoro, una che non è stata salvata. È necessario salvare la cartella di lavoro in modo che abbia effettivamente un nome che possa essere restituito correttamente dalla funzione CELLA. Inoltre, non funzionerà correttamente se la cartella di lavoro o il nome del foglio di lavoro contiene una parentesi chiusa (‘]’). In tal caso, ti consigliamo di utilizzare una delle altre soluzioni discusse in questo suggerimento.
Se preferisci utilizzare una funzione definita dall’utente, puoi provare qualcosa di semplice, come questa funzione:

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)

 

Tuttavia, questa funzione non fornisce il risultato desiderato perché restituisce sempre il nome del foglio di lavoro attivo. Ciò significa che se hai la funzione chiamata su ciascuno dei fogli della tua cartella di lavoro, restituirà sempre il nome del foglio attivo su ciascuno di quei fogli di lavoro, invece del nome del foglio su cui viene utilizzata la funzione. La seguente funzione fornisce risultati migliori:

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)

 

Se pensi di voler utilizzare la funzione per fare riferimento a un nome di foglio di lavoro altrove nella cartella di lavoro, allora questa funzione funzionerà meglio per te:

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 versione della funzione richiede di fornire un riferimento di cella (qualsiasi riferimento di cella) a una cella del foglio di lavoro di cui si desidera utilizzare il nome.

Ovviamente, se preferisci non utilizzare una funzione definita dall’utente, puoi semplicemente creare una macro che inserisca il nome di ciascuna scheda del foglio di lavoro nella stessa cella in ogni foglio di lavoro. Ad esempio, la seguente macro passa attraverso ciascuno dei fogli di lavoro nella cartella di lavoro e inserisce il nome di ciascun foglio di lavoro nella cella A1.

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)

 

Si noti che questo approccio non è dinamico (deve essere eseguito nuovamente ogni volta che si modificano i nomi dei fogli di lavoro o si aggiungono nuovi fogli di lavoro). Inoltre sovrascrive tutto ciò che si trova nella cella A1 (se desideri che i nomi dei fogli di lavoro vengano inseriti in una cella diversa in ciascun foglio di lavoro, modifica i valori utilizzati nella collezione Cells).

 

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

Ti è stato utile?