VBA Copy Worksheet - Как да използвам Worksheet.Copy?

Съдържание

Excel VBA Copy Worksheet

Понякога може да се наложи да копираме определен диапазон от клетки от един работен лист в друг или в самия същия работен лист. В някои случаи може да се наложи да копираме целия работен лист в нов работен лист. Може да сте запознати с копирането на набор от клетки, но какво ще кажете за копирането на целия работен лист с помощта на VBA. В тази статия ще ви дадем подробно обяснение как да копирате работния лист в друга работна книга във VBA.

Метод за работен лист. Копиране във VBA

Първо, разгледайте синтаксиса на метода за копиране на работен лист.

Работен лист (). Копиране (преди, след)

Методът Copy има два аргумента в него Before & After; и двете не са задължителни.

  1. Преди: Целевият работен лист, който копираме. Ако посочите това, не можете да използвате аргумент After .
  2. След: Целевият работен лист, който копираме. Ако посочите това, не можете да използвате аргумент Before .

Тъй като и двете са незадължителни аргументи, ако сте го оставили празно, тогава целевият работен лист ще бъде копиран в нова работна книга, Microsoft Excel автоматично създава нова работна книга.

Ще видим примери за същото сега в раздела за примери.

Примери за копиране на работен лист във VBA

Пример # 1

Например, погледнете данните по-долу в работния лист с име „Януари“.

Имаме горните данни в работния лист, наречен „Януари“ .

  • И така, трябва да копираме горния работен лист след работния лист, наречен „ Sheet1 “. Първо се обърнете към работния лист, като използвате обекта на работни листове.

Код:

Sub Worksheet_Copy_Example1 () Worksheets ("January") End Sub
  • След това въведете метода „ Копиране “.

Код:

Sub Worksheet_Copy_Example1 () Worksheets ("January"). Copy End Sub
  • Както можете да видите по-горе, когато започнете да пишете, ние не виждаме обекта на IntelliSense за работни листове, това е един от значимите проблеми за начинаещи, ако те директно използват обект WORKSHEETS, но това може да бъде премахнато чрез използване на променливи, така че дефинирайте променлива като „ Работен лист “.

Код:

Sub Worksheet_Copy_Example1 () Dim Ws as Workheet End Sub
  • Сега за тази променлива задайте референцията на работния лист „ Януари “.

Код:

Sub Worksheet_Copy_Example1 () Dim Ws as Worksheet Set Ws = Worksheets ("January") End Sub
  • И така, сега, използвайки променливата „ Ws “, можем лесно да се обърнем към работния лист с име „ Януари “. Така че въведете името на променливата „ Ws “ и изберете метода „ Copy “.

Там отиваме, можем да видим списъка IntelliSense, показващ всички свойства и методи на обекти на работни листове, благодарение на декларацията на променливата.

  • Изберете метода „ Копиране “ и ние можем да видим аргументи на метода „ Копиране “.
  • Тъй като трябва да копираме работния лист след работния лист „ Sheet1 “, първо отворете аргумента „ After “, като въведете името на аргумента, както е показано по-долу.

След като аргументът е подчертан, тъй като сме използвали името на аргумента със символ „ равен по дефиниция “ (: =)

  • Сега въведете името на листа, като използвате обекта „ Sheets “.

Код:

Sub Worksheet_Copy_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("January") Ws.Copy After: = Sheets ("Sheet1") End Sub
  • Готови сме. Това ще копира работния лист „ Януари “ след работния лист „ Лист1 “.

Ето, копирахме работен лист от януари вдясно от „Sheet1“. Едно от нещата по подразбиране тук е името на работния лист е същото като копирания лист с числов брой на работния лист в скобата, в този случай е „(2)“.

  • За да промените името на работния лист, добавете парче код отдолу към горния код.
  • 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.
  • Името на копирания работен лист по подразбиране ще бъде същото, последвано от броя на този копиран работен лист.

Интересни статии...