Creare una copia di un foglio di lavoro e denominarla utilizzando una macro

Giacomo vorrebbe creare una copia del suo foglio di lavoro “Master”, assegnare un nome al nuovo foglio e spostarlo alla fine delle schede dei fogli di lavoro, tutto all’interno di una macro. Ha provato a registrare una macro per fare questo, ma non ha funzionato.

Il fatto che la macro registrata non abbia funzionato non è particolarmente sorprendente. Quando registri una macro, dici a Excel di registrare i passaggi che fai. Quei passaggi (in questo caso) includevano la denominazione del foglio di lavoro, sicché quel nome è stato registrato nella macro. Provando a eseguire la macro una seconda volta, riceverai un errore perché il foglio di lavoro che stai tentando di creare al secondo passaggio è già stato creato al primo.

In questo caso devi scrivere una macro manualmente. Puoi iniziare con la registrazione del processo e otterrai un codice come il seguente:

 

Sub Macro1()
    Sheets("Master").Select
    Sheets("Master").Copy After:=Sheets(3)
    Sheets("Master (2)").Select
    Sheets("Master (2)").Name = "NuovoMaster"
End Sub

 

Si noti che il codice posiziona il foglio di lavoro (dopo il terzo foglio) e poi lo denomina sempre con la stessa nome. C’è molto da cambiare qui. Quello che ti serve è cambiarlo in qualcosa di simile al seguente:

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 copierà il foglio di lavoro denominato “Master” alla fine dell’elenco dei fogli (indipendentemente dal numero di fogli presenti nella cartella di lavoro) e richiederà un nuovo nome per il foglio di lavoro finché non viene immesso un nome valido.

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

Ti è stato utile?