Arkusz kopiowania Excel VBA
Czasami może być konieczne skopiowanie określonego zakresu komórek z jednego arkusza do drugiego lub w tym samym arkuszu. W niektórych przypadkach może być konieczne skopiowanie całego arkusza do nowego arkusza. Być może znasz kopiowanie zakresu komórek, ale co powiesz na skopiowanie całego arkusza roboczego za pomocą VBA. W tym artykule podamy szczegółowe wyjaśnienie, jak skopiować arkusz do innego skoroszytu w VBA.

Arkusz roboczy Metoda kopiowania w VBA
Najpierw spójrz na składnię metody Worksheet Copy.
Arkusz roboczy (). Kopiuj (przed, po)
Copy ma dwa argumenty Przed & Po; obie te opcje są opcjonalne.
- Przed: docelowy arkusz roboczy, który kopiujemy. Jeśli to określisz, nie możesz użyć argumentu Po .
- Po: docelowy arkusz roboczy, który kopiujemy. Jeśli to określisz, nie możesz użyć argumentu Przed .
Ponieważ oba te argumenty są opcjonalnymi argumentami, jeśli pozostawisz je puste, docelowy arkusz zostanie skopiowany do nowego skoroszytu, program Microsoft Excel automatycznie utworzy nowy skoroszyt.
Zobaczymy teraz przykłady tego samego w sekcji przykładów.
Przykłady kopiowania arkusza w VBA
Przykład 1
Na przykład spójrz na poniższe dane w arkuszu o nazwie „Styczeń”.

Powyższe dane mamy w arkuszu o nazwie „Styczeń” .
- Tak więc musimy skopiować powyższy arkusz roboczy po arkuszu o nazwie „ Arkusz1 ”. Najpierw odwołaj się do arkusza przy użyciu obiektu arkuszy roboczych.
Kod:
Sub Worksheet_Copy_Example1 () Worksheets ("styczeń") End Sub

- Następnie wprowadź metodę „ Kopiuj ”.
Kod:
Sub Worksheet_Copy_Example1 () Worksheets („January”). Copy End Sub

- Jak widać powyżej, gdy zaczynamy pisać, nie widzimy listy IntelliSense dla obiektu arkuszy roboczych, jest to jeden z istotnych problemów dla początkujących, jeśli bezpośrednio używają obiektu WORKSHEETS, ale można to wyeliminować za pomocą zmiennych, więc zdefiniuj zmienna jako „ Arkusz roboczy ”.
Kod:
Sub Worksheet_Copy_Example1 () Dim Ws as Worksheet End Sub

- Teraz dla tej zmiennej ustaw odniesienie arkusza roboczego „ Styczeń ”.
Kod:
Sub Worksheet_Copy_Example1 () Dim Ws as Worksheet Set Ws = Worksheets ("January") End Sub

- Tak więc, teraz używając zmiennej „ Ws ”, możemy łatwo odwołać się do arkusza o nazwie „ Styczeń ”. Zatem wprowadź nazwę zmiennej „ Ws ” i wybierz metodę „ Kopiuj ”.

Idziemy, możemy zobaczyć listę IntelliSense pokazującą wszystkie właściwości i metody obiektów arkusza, dzięki deklaracji zmiennej.
- Wybierz metodę „ Kopiuj ”, a zobaczymy argumenty metody „ Kopiuj ”.

- Ponieważ musimy skopiować arkusz po arkuszu „ Arkusz1 ”, najpierw uzyskaj dostęp do argumentu „ Po ”, wprowadzając nazwę argumentu, taką jak poniżej.

Po podświetleniu argumentu, ponieważ użyliśmy nazwy argumentu z symbolem „ równy z definicji ” (: =)
- Teraz wprowadź nazwę arkusza za pomocą obiektu „ Arkusze ”.
Kod:
Sub Worksheet_Copy_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("January") Ws.Copy After: = Arkusze ("Arkusz1") End Sub

- Skończyliśmy. Spowoduje to skopiowanie arkusza roboczego „ Styczeń ” po arkuszu „ Arkusz1 ”.

Proszę bardzo, skopiowaliśmy styczniowy arkusz roboczy na prawo od „Sheet1”. Jedną z domyślnych rzeczy tutaj jest to, że nazwa arkusza jest taka sama jak kopiowanego arkusza z numeryczną liczbą arkuszy w nawiasie, w tym przypadku jest to „(2)”.
- Aby zmienić nazwę arkusza roboczego, dodaj poniższy fragment kodu do powyższego kodu.

- 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.
- Domyślna nazwa skopiowanego arkusza będzie taka sama, a po niej liczba skopiowanych arkuszy.