VBA kopijavimo darbalapis - kaip naudoti darbalapį. Kopijuoti?

„Excel VBA“ kopijavimo darbalapis

Kartais mums gali tekti nukopijuoti tam tikrą langelių diapazoną iš vieno darbalapio į kitą arba tame pačiame darbalapyje. Kai kuriais atvejais mums gali reikėti nukopijuoti visą darbalapį į naują darbalapį. Jums gali būti žinoma, kaip nukopijuoti daugybę langelių, bet kaip kopijuoti visą darbalapį naudojant VBA. Šiame straipsnyje pateiksime jums išsamų paaiškinimą, kaip nukopijuoti darbalapį į kitą VBA darbaknygę.

Darbalapis. Kopijavimo metodas VBA

Pirmiausia pažvelkite į „Worksheet Copy“ metodo sintaksę.

Darbalapis (). Kopijuoti (prieš, po)

Kopijavimo metodas turi du argumentus Before & After; abu jie yra neprivalomi.

  1. Prieš: tikslinis darbalapis, kurį kopijuojame. Jei tai nurodysite, negalėsite naudoti argumento „ Po“ .
  2. Po: tikslinis darbalapis, kurį kopijuojame. Jei tai nurodysite, negalėsite naudoti argumento „ Prieš“ .

Kadangi abu šie argumentai yra neprivalomi, jei paliksite tuščią, tikslinis darbalapis bus nukopijuotas į naują darbaknygę, „Microsoft Excel“ automatiškai sukuria naują darbaknygę.

To paties pavyzdžius pamatysime dabar pavyzdžių skyriuje.

VBA kopijavimo darbalapio pavyzdžiai

1 pavyzdys

Pavyzdžiui, pažvelkite į žemiau esančius duomenis darbalapyje, pavadintame „Sausis“.

Minėtus duomenis darbalapyje pavadinome „sausis“ .

  • Taigi, mes turime nukopijuoti aukščiau pateiktą darbalapį po darbalapio pavadinimu „ Sheet1 “. Pirmiausia, naudodamiesi darbalapių objektu, kreipkitės į darbalapį.

Kodas:

Antrasis darbalapis_Kopija_pavyzdys1 () Darbalapiai („Sausis“) Pabaigos antrinis
  • Tada įveskite metodą „ Kopijuoti “.

Kodas:

Antrinis darbalapis_Kopija_pavyzdys1 () darbalapiai („sausis“). Nukopijuokite pabaigos antrinę dalį
  • Kaip matote aukščiau, kai pradedate rašyti, mes nematome „IntelliSense“ darbo lapų objekto sąrašo, tai yra viena iš svarbiausių problemų pradedantiesiems, jei jie tiesiogiai naudoja objektą WORKSHEETS, tačiau tai galima pašalinti naudojant kintamuosius, todėl apibrėžkite kintamasis kaip „ darbalapis “.

Kodas:

Antrasis darbalapis_Kopija_pavyzdys1 () Dim Ws kaip darbalapio pabaigos antrinis
  • Dabar šiam kintamajam nustatykite darbalapio „ sausis “ nuorodą .

Kodas:

Antrinis darbalapio_ kopija_pavyzdys1 () Uždenkite Ws kaip darbalapio rinkinį Ws = darbalapiai („sausis“) Pabaiga
  • Taigi, dabar naudodami kintamąjį „ Ws “, galime lengvai kreiptis į darbalapį pavadinimu „ sausis “. Taigi įveskite kintamojo pavadinimą „ Ws “ ir pasirinkite „ Kopijuoti “ metodą.

Čia mes galime pamatyti „IntelliSense“ sąrašą, kuriame pateikiamos visos darbalapio objektų savybės ir metodai, kintamojo deklaracijos dėka.

  • Pasirinkite „ Kopijuoti “ metodą ir galėsime pamatyti „ Kopijavimo “ metodo argumentus .
  • Kadangi mes turime nukopijuoti darbalapį po darbalapio „ Sheet1 “, pirmiausia pasiekite argumentą „ After “ įvesdami argumento pavadinimą, kaip nurodyta toliau.

Po argumentas yra paryškinamas, nes mes naudojamas argumentas vardą " lygus pagal apibrėžimą " simboliu (: =)

  • Dabar įveskite lapo pavadinimą naudodami objektą „ Lakštai “.

Kodas:

Antrinis darbalapis_Kopija_pavyzdys1 () „Dim Ws“ kaip darbalapio rinkinys Ws = darbalapiai („sausis“) Ws.Copy After: = lakštai („Sheet1“) pabaigos dalis
  • Mes baigėme. Tai nukopijuos darbalapį „ Sausis “ po darbalapio „ Lapas1 “.

Štai, nukopijavome sausio darbalapį dešinėje „Sheet1“. Vienas iš numatytųjų dalykų yra tai, kad darbalapio pavadinimas yra toks pat, kaip nukopijuotas lapas su skliausteliuose esančiu darbalapio skaičiumi, šiuo atveju tai yra „(2)“.

  • Norėdami pakeisti darbalapio pavadinimą, pridėkite žemiau esančią kodo dalį prie aukščiau nurodyto kodo.
  • 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.
  • Numatytasis nukopijuoto darbalapio pavadinimas bus tas pats, po kurio bus nurodytas nukopijuoto darbalapio skaičius.

Įdomios straipsniai...