Copia automatica del codice del foglio di lavoro (Microsoft Excel)
Tim rileva correttamente che un utente può fare clic con il pulsante destro del mouse su una scheda del foglio di lavoro, quindi selezionare Visualizza codice per aprire un foglio di codici VBA per il foglio di lavoro. Ha scritto un codice che manipola automaticamente celle, colonne e righe. Questo codice deve essere disponibile su ogni foglio di lavoro in una cartella di lavoro, anche se l’utente aggiunge nuovi fogli di lavoro. Tim si chiede se esiste un modo, utilizzando VBA, per copiare automaticamente il codice di un foglio di lavoro in un nuovo foglio di lavoro nella cartella di lavoro.
Ci sono alcuni modi per affrontare questo problema. Un modo, e forse il modo più semplice, è rimuovere le macro dal foglio di codice del foglio di lavoro e spostarle nel modulo ThisWorkbook. Il foglio di codice del foglio di lavoro è ciò che vedi quando fai clic con il pulsante destro del mouse su una scheda del foglio di lavoro. Il codice in quel foglio destinato a gestire gli eventi che si verificano nel foglio di lavoro e solo in quel foglio di lavoro. Se sposti il codice nel modulo ThisWorkbook, gli eventi possono ancora essere gestiti, ma tali eventi si applicano a tutti i fogli di lavoro nella cartella di lavoro.
Ad esempio, quando fai clic con il pulsante destro del mouse su una scheda del foglio di lavoro e guardi la finestra del codice, stai inizialmente lavorando all’evento Worksheet_SelectionChange. Se si desidera spostare questo codice nel modulo ThisWorkbook, è possibile inserirlo all’interno dell’evento Workbook_SheetChange.
Se un tale “cambio di livello” del codice non funziona per qualche motivo, un altro approccio consiste nel creare un foglio di lavoro modello all’interno della cartella di lavoro.
Dagli un nome come “MyMaster” e assicurati che includa tutto il codice che desideri aggiungere ai fogli di lavoro appena creati. Puoi persino nascondere questo foglio di lavoro, se lo desideri, in modo da non distrarre gli utenti. Quindi, inserisci la seguente macro nel modulo ThisWorkbook:
Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim tmpName As String tmpName = Sh.Name Sheets("MyMaster").Copy Before:=Sheets(Sh.Name) Application.DisplayAlerts = False Sheets(Sh.Name).Delete Application.DisplayAlerts = True Sheets("MyMaster (2)").Name = tmpName End Sub
Questo codice viene attivato ogni volta che un nuovo foglio di lavoro viene aggiunto alla cartella di lavoro. Esamina il nome del foglio di lavoro appena aggiunto (che sarà qualcosa come “Sheet4”) e salva quel nome in una variabile temporanea.
Il codice quindi copia il foglio di lavoro MyMaster nella cartella di lavoro (che copia anche le macro nel foglio di lavoro), elimina il foglio di lavoro originariamente creato e quindi rinomina la nuova copia di MyMaster in modo che abbia lo stesso nome del foglio di lavoro originale.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (7880) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: