VBA Copy Worksheet - Jak používat Worksheet.Copy?

Kopírování listu Excel VBA

Občas možná budeme muset zkopírovat konkrétní rozsah buněk z jednoho listu do druhého nebo do stejného listu samotného. V některých případech možná budeme muset zkopírovat celý list do nového listu. Možná znáte kopírování řady buněk, ale co takhle zkopírovat celý samotný list pomocí VBA. V tomto článku vám poskytneme podrobné vysvětlení, jak zkopírovat list do jiného sešitu ve VBA.

Worksheet.Copy metoda ve VBA

Nejprve se podívejte na syntaxi metody Kopírování listu.

List (). Kopírovat (před, po)

Metoda kopírování obsahuje dva argumenty Před a po; oba jsou volitelné.

  1. Před: Cílený list, který kopírujeme. Pokud zadáte toto, nemůžete použít argument After .
  2. Po: Cílený list, který kopírujeme. Pokud zadáte toto, nemůžete použít argument Before .

Vzhledem k tomu, že se jedná o nepovinné argumenty, pokud jej necháte prázdné, bude cílený list zkopírován do nového sešitu, Microsoft Excel automaticky vytvoří nový sešit.

Nyní uvidíme příklady stejných v sekci příklady.

Příklady kopírování listu ve VBA

Příklad č. 1

Podívejte se například na níže uvedená data v listu s názvem „Leden“.

Výše uvedená data máme v listu s názvem „Leden“ .

  • Musíme tedy zkopírovat výše uvedený list za list s názvem „ List1 “. Nejprve odkazujte na list pomocí objektu pracovních listů.

Kód:

Sub Worksheet_Copy_Example1 () Listy („leden“) Konec Sub
  • Dále zadejte metodu „ Kopírovat “.

Kód:

Sub Worksheet_Copy_Example1 () Listy ("leden"). Kopie End Sub
  • Jak vidíte výše, když začnete psát, nedostaneme seznam IntelliSense pro objekt pracovních listů, jedná se o jeden z významných problémů pro začátečníky, pokud přímo používají objekt WORKSHEETS, ale to lze eliminovat pomocí proměnných, takže definujte proměnná jako „ Pracovní list “.

Kód:

Sub Worksheet_Copy_Example1 () Dim Ws jako Work Sub End Sub
  • Nyní pro tuto proměnnou nastavte odkaz na list „ Leden “.

Kód:

Sub Worksheet_Copy_Example1 () Dim Ws jako sada listů Ws = listy ("leden") End Sub
  • Nyní tedy pomocí proměnné „ Ws “ můžeme snadno odkazovat na list s názvem „ Leden “. Zadejte tedy název proměnné „ Ws “ a zvolte metodu „ Copy “.

Tam jdeme, můžeme vidět seznam IntelliSense zobrazující všechny vlastnosti a metody objektů listu díky deklaraci proměnné.

  • Vyberte metodu „ Kopírovat “ a uvidíme argumenty metody „ Kopírovat “.
  • Protože musíme zkopírovat list za list „ List1 “, nejprve otevřete argument „ Po “ zadáním názvu argumentu, jak je uvedeno níže.

Poté, co je argument zvýrazněn, protože jsme použili název argumentu se symbolem „ rovná se definice “ (: =)

  • Nyní zadejte název listu pomocí objektu „ Listy “.

Kód:

Dílčí list_Copy_Example1 () Dim Ws jako sada listů Ws = Listy ("leden") Ws.Copy After: = Listy ("List1") Konec Sub
  • Jsme hotovi. Tím se zkopíruje list „ Leden “ po listu „ List1 “.

Tady máš, zkopírovali jsme lednový list napravo od „List1“. Jednou z výchozích věcí je, že název listu je stejný jako zkopírovaný list s číselným počtem listu v závorce, v tomto případě je to „(2)“.

  • Chcete-li změnit název listu, přidejte do výše uvedeného kódu část kódu níže.
  • 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.
  • Výchozí zkopírovaný název listu bude stejný, následovaný počtem zkopírovaného listu.

Zajímavé články...