VBA Copy Worksheet - Hur använder jag Worksheet.Copy?

Innehållsförteckning

Excel VBA-kopieringsark

Ibland kan vi behöva kopiera ett visst cellområde från ett kalkylblad till ett annat eller i samma kalkylblad. I vissa fall kan vi behöva kopiera hela kalkylbladet till ett nytt kalkylblad. Du kanske är bekant med att kopiera ett antal celler, men vad sägs om att kopiera hela kalkylbladet med VBA. I den här artikeln kommer vi att ge dig en detaljerad förklaring av hur du kopierar kalkylbladet till en annan arbetsbok i VBA.

Worksheet.Copy Method i VBA

Ta först en titt på syntaxen för kalkylmetodens kopieringsmetod.

Kalkylblad (). Kopiera (före, efter)

Kopieringsmetoden har två argument före och efter; båda dessa är valfria.

  1. Innan: Det riktade kalkylbladet som vi kopierar. Om du anger detta kan du inte använda After- argumentet.
  2. Efter: Det riktade kalkylbladet som vi kopierar. Om du anger detta kan du inte använda argumentet Före .

Eftersom båda dessa är valfria argument om du lämnar det tomt kommer det riktade kalkylbladet att kopieras till en ny arbetsbok, Microsoft Excel skapar automatiskt en ny arbetsbok.

Vi kommer att se exempel på samma nu i avsnittet med exempel.

Exempel på kopieringsark i VBA

Exempel 1

Titta till exempel på nedanstående data i kalkylbladet ”Januari”.

Vi har ovanstående data i kalkylbladet ”Januari” .

  • Så vi måste kopiera ovanstående kalkylblad efter kalkylbladet ” Sheet1 ”. Se först kalkylbladet med kalkylarkobjektet.

Koda:

Sub Worksheet_Copy_Example1 () Worksheets ("January") Slut Sub
  • Därefter anger du " Kopiera " -metoden.

Koda:

Sub Worksheet_Copy_Example1 () Worksheets ("January"). Kopiera End Sub
  • Som du kan se ovan när du börjar skriva får vi inte se IntelliSense-listan för kalkylobjekt, detta är ett av de viktigaste problemen för nybörjare om de använder WORKSHEETS-objekt direkt, men detta kan elimineras med hjälp av variabler, så definiera variabel som " Arbetsblad ".

Koda:

Sub Worksheet_Copy_Example1 () Dim Ws as Worksheet End Sub
  • Nu för denna variabel ställa in referens för kalkylbladet " januari ".

Koda:

Sub Worksheet_Copy_Example1 () Dim Ws as Worksheet Set Ws = Worksheets ("January") End Sub
  • Så, nu med variabeln " Ws " kan vi enkelt hänvisa till kalkylbladet " Januari ". Så skriv in variabelnamnet " Ws " och välj " Copy " -metoden.

Där vi går kan vi se IntelliSense-listan som visar alla egenskaper och metoder för kalkylarkobjekt, tack vare variabeldeklarationen.

  • Välj " Kopiera " -metoden och vi kan se argument för " Kopiera " -metoden.
  • Eftersom vi måste kopiera kalkylbladet efter kalkylbladet " Sheet1 ", öppna först " After " -argumentet genom att ange argumentnamnet som nedan.

Efter att argumentet är markerat eftersom vi har använt argumentnamn med symbolen " lika med definition " (: =)

  • Ange nu bladets namn med hjälp av " Sheets " -objektet.

Koda:

Sub Worksheet_Copy_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("January") Ws.Copy After: = Sheets ("Sheet1") End Sub
  • Vi är klara. Detta kopierar kalkylbladet " januari " efter kalkylbladet " Sheet1 ".

Så fort du har kopierat januari-kalkylblad till höger om “Sheet1”. En av de vanligaste sakerna här är namnet på kalkylbladet är samma som det kopierade arket med ett numeriskt antal av kalkylbladet i parentes, i det här fallet är det “(2)”.

  • För att ändra kalkylbladets namn, lägg till kod nedan under kod ovan.
  • 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.
  • Standardkopierat kalkylbladsnamn är detsamma följt av antalet kopierade kalkylblad.

Intressanta artiklar...