VBA Copy Worksheet - Hoe Worksheet.Copy te gebruiken?

Excel VBA-werkblad kopiëren

Soms moeten we een specifiek celbereik van het ene werkblad naar het andere of in hetzelfde werkblad zelf kopiëren. In sommige gevallen moeten we het hele werkblad naar een nieuw werkblad kopiëren. U bent misschien bekend met het kopiëren van een reeks cellen, maar hoe zit het met het kopiëren van het hele werkblad zelf met VBA. In dit artikel zullen we u een gedetailleerde uitleg geven over hoe u het werkblad naar een andere werkmap in VBA kopieert.

Werkblad. Kopieer methode in VBA

Bekijk eerst de syntaxis van de methode Worksheet Copy.

Werkblad (). Kopiëren (voor, na)

De kopieermethode bevat twee argumenten Before & After; beide zijn optioneel.

  1. Voor: het gerichte werkblad dat we kopiëren. Als u dit specificeert, kunt u het After- argument niet gebruiken .
  2. Na: het gerichte werkblad dat we kopiëren. Als u dit specificeert, kunt u het argument Before niet gebruiken .

Aangezien dit beide optionele argumenten zijn als u het leeg laat, wordt het beoogde werkblad naar een nieuwe werkmap gekopieerd. Microsoft Excel maakt automatisch een nieuwe werkmap aan.

We zullen nu voorbeelden van hetzelfde zien in de voorbeeldensectie.

Voorbeelden van werkblad kopiëren in VBA

Voorbeeld 1

Bekijk bijvoorbeeld de onderstaande gegevens in het werkblad met de naam "Januari".

We hebben de bovenstaande gegevens in het werkblad met de naam "Januari" .

  • We moeten dus het bovenstaande werkblad kopiëren naar het werkblad met de naam " Blad1 ". Verwijs eerst naar het werkblad door het werkbladobject te gebruiken.

Code:

Sub Worksheet_Copy_Example1 () Worksheets ("januari") End Sub
  • Voer vervolgens de " Kopieer " -methode in.

Code:

Sub Worksheet_Copy_Example1 () Worksheets ("januari"). Copy End Sub
  • Zoals u hierboven kunt zien wanneer u begint met typen, krijgen we de IntelliSense-lijst voor werkbladenobject niet te zien, dit is een van de grootste problemen voor beginners als ze het WORKSHEETS-object rechtstreeks gebruiken, maar dit kan worden geëlimineerd door variabelen te gebruiken, dus definieer het variabele als " Werkblad ".

Code:

Sub Worksheet_Copy_Example1 () Dim Ws als werkblad einde Sub
  • Stel nu voor deze variabele de referentie van het werkblad " Januari " in.

Code:

Sub Worksheet_Copy_Example1 () Dim Ws as Worksheet Set Ws = Worksheets ("januari") End Sub
  • Dus nu we de variabele " Ws " gebruiken, kunnen we gemakkelijk verwijzen naar het werkblad met de naam " Januari ". Voer dus de variabelenaam " Ws " in en kies de " Kopiëren " -methode.

Daar gaan we, we kunnen de IntelliSense-lijst zien met alle eigenschappen en methoden van werkbladobjecten, dankzij de variabele declaratie.

  • Kies de " Kopieer " -methode, en we kunnen argumenten zien van de " Kopieer " -methode.
  • Aangezien we het werkblad na het werkblad " Blad1 " moeten kopiëren , moet u eerst het argument " Na " openen door de argumentnaam in te voeren zoals hieronder.

Nadat het argument is gemarkeerd, omdat we de argumentnaam hebben gebruikt met het symbool ' gelijk per definitie ' (: =)

  • Voer nu de bladnaam in met behulp van het " Sheets " -object.

Code:

Sub Worksheet_Copy_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("januari") Ws.Copy After: = Sheets ("Sheet1") End Sub
  • We zijn klaar. Hierdoor wordt het werkblad “ Januari ” gekopieerd naar het werkblad “ Blad1 ”.

Alsjeblieft, we hebben het werkblad van januari gekopieerd, rechts van "Blad1". Een van de standaard dingen hier is dat de naam van het werkblad hetzelfde is als het gekopieerde blad met een numerieke telling van het werkblad tussen haakjes, in dit geval is het “(2)”.

  • Om de naam van het werkblad te wijzigen, voegt u het onderstaande stukje code toe aan de bovenstaande code.
  • 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.
  • De standaard gekopieerde werkbladnaam is hetzelfde, gevolgd door het aantal van dat gekopieerde werkblad.

Interessante artikelen...