VBA Copy Worksheet - Come utilizzare Worksheet.Copy?

Excel VBA Copia foglio di lavoro

A volte potrebbe essere necessario copiare un intervallo specifico di celle da un foglio di lavoro a un altro o nello stesso foglio di lavoro stesso. In alcuni casi, potrebbe essere necessario copiare l'intero foglio di lavoro in un nuovo foglio di lavoro. Potresti avere familiarità con la copia di un intervallo di celle, ma che ne dici di copiare l'intero foglio di lavoro stesso usando VBA. In questo articolo, ti forniremo una spiegazione dettagliata su come copiare il foglio di lavoro su un'altra cartella di lavoro in VBA.

Metodo Worksheet.Copy in VBA

Innanzitutto, dai un'occhiata alla sintassi del metodo Copia foglio di lavoro.

Foglio di lavoro (). Copia (prima, dopo)

Il metodo di copia ha due argomenti in esso Prima e dopo; entrambi questi sono opzionali.

  1. Prima: il foglio di lavoro mirato che stiamo copiando. Se lo specifichi, non puoi usare l' argomento After .
  2. Dopo: il foglio di lavoro mirato che stiamo copiando. Se lo specifichi, non puoi usare l' argomento Before .

Poiché entrambi questi sono argomenti opzionali, se lo hai lasciato vuoto, il foglio di lavoro di destinazione verrà copiato in una nuova cartella di lavoro, Microsoft Excel crea automaticamente una nuova cartella di lavoro.

Vedremo ora esempi dello stesso nella sezione degli esempi.

Esempi di copia del foglio di lavoro in VBA

Esempio 1

Ad esempio, guarda i dati seguenti nel foglio di lavoro denominato "Gennaio".

Abbiamo i dati di cui sopra nel foglio di lavoro denominato "gennaio" .

  • Quindi, dobbiamo copiare il foglio di lavoro sopra dopo il foglio di lavoro denominato " Foglio1 ". Innanzitutto, fare riferimento al foglio di lavoro utilizzando l'oggetto fogli di lavoro.

Codice:

Sub Worksheet_Copy_Example1 () Worksheets ("January") End Sub
  • Quindi, inserisci il metodo " Copia ".

Codice:

Sub Worksheet_Copy_Example1 () Worksheets ("January"). Copy End Sub
  • Come puoi vedere sopra quando si inizia a digitare non possiamo vedere l'elenco IntelliSense per l'oggetto fogli di lavoro, questo è uno dei problemi significativi per i principianti se usano direttamente l'oggetto FOGLI DI LAVORO, ma questo può essere eliminato usando le variabili, quindi definisci il variabile come " Foglio di lavoro ".

Codice:

Sub Worksheet_Copy_Example1 () Dim Ws as Worksheet End Sub
  • Ora per questa variabile impostare il riferimento del foglio di lavoro " Gennaio ".

Codice:

Sub Worksheet_Copy_Example1 () Dim Ws as Worksheet Set Ws = Worksheets ("January") End Sub
  • Quindi, ora utilizzando la variabile " Ws " possiamo facilmente fare riferimento al foglio di lavoro denominato " gennaio ". Quindi inserisci il nome della variabile " Ws " e scegli il metodo " Copia ".

Ecco che possiamo vedere l'elenco IntelliSense che mostra tutte le proprietà e i metodi degli oggetti del foglio di lavoro, grazie alla dichiarazione delle variabili.

  • Scegli il metodo " Copia " e possiamo vedere gli argomenti del metodo " Copia ".
  • Poiché dobbiamo copiare il foglio di lavoro dopo il foglio di lavoro " Foglio1 ", accedere prima all'argomento " Dopo " inserendo il nome dell'argomento come di seguito.

Dopo che l' argomento è stato evidenziato poiché abbiamo usato il nome dell'argomento con il simbolo " uguale per definizione " (: =)

  • Ora inserisci il nome del foglio utilizzando l' oggetto " Fogli ".

Codice:

Sub Worksheet_Copy_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("January") Ws.Copy After: = Sheets ("Sheet1") End Sub
  • Abbiamo chiuso. Questo copierà il foglio di lavoro " Gennaio " dopo il foglio di lavoro " Foglio1 ".

Ecco fatto, abbiamo copiato il foglio di lavoro di gennaio a destra di "Foglio1". Una delle cose predefinite qui è che il nome del foglio di lavoro è uguale al foglio copiato con un conteggio numerico del foglio di lavoro tra parentesi, in questo caso è "(2)".

  • Per modificare il nome del foglio di lavoro, aggiungi sotto la parte di codice al codice sopra.
  • So the overall code is below.

Code:

Sub Worksheet_Copy_Example1() Dim Ws As Worksheet Set Ws = Worksheets("January") Ws.Copy After:=Sheets("Sheet1") ActiveSheet.Name = “New Copied Sheet” End Sub
  • Now run the code and see what happens.

Example #2

Similarly, if you want to copy the worksheet “Sheet1” before the worksheet “January” uses the below code.

Code:

Sub Worksheet_Copy_Example2() Dim Ws As Worksheet Set Ws = Worksheets("Sheet1") Ws.Copy Before:=Sheets("January") ActiveSheet.Name = "New Sheet1" End Sub
  • So this will create a sheet-like the below.

Example #3

Similarly, if you want to copy the worksheet after the last worksheet then use the below code.

Code:

Sub Worksheet_Copy_Example3() Dim Ws As Worksheet Set Ws = Worksheets("January") Ws.Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = "Last Sheet" End Sub

Output:

The only change we made is we have used “Sheets. Count” method to count how many sheets are there in the workbook.

Example #4

Similarly, if you want to copy the worksheet before the first worksheet then use the below code.

Code:

Sub Worksheet_Copy_Example4() Dim Ws As Worksheet Set Ws = Worksheets("January") Ws.Copy After:=Sheets(1) ActiveSheet.Name = "First Sheet" End Sub

Output:

In this case, we have used “Sheets(1)” so this will place the worksheet copied before the first worksheet of the workbook.

Things to Remember

  • Suppose you don’t use either Before & After argument of the Worksheet. Copy worksheets will be copied to the new workbook altogether.
  • Il nome predefinito del foglio di lavoro copiato sarà lo stesso seguito dal conteggio del foglio di lavoro copiato.

Articoli interessanti...