VBA másolólap / lap másolása egy másik munkafüzetbe

Ez az oktatóanyag kitér arra, hogyan másolhat munkalapot vagy munkalapot a VBA segítségével.

Másolja a munkalapot az új munkafüzetbe

Munkalap másolása új munkafüzetbe:

1 Táblázatok ("Sheet1"). Másolat

Másolja az ActiveSheet -et az új munkafüzetbe

Az ActiveSheet másolása egy új munkafüzetbe:

1 ActiveSheet.Másolás

Több lap másolása az új munkafüzetbe

Több munkalap másolása új munkafüzetbe:

1 ActiveWindow.SelectedSheets.Copy

Lap másolása ugyanazon a munkafüzeten belül

Először a legegyszerűbb példányos példányokat mutattuk be: a munkalapok másolása egy új munkafüzetbe. Az alábbi példák megmutatják, hogyan másolhat egy munkalapot ugyanazon a munkafüzeten belül. Amikor munkalapot másol egy munkafüzetbe, meg kell adnia a helyét. A hely megadásához azt fogja mondani a VBA -nak, hogy helyezze át a munkalapot egy másik munkalap előtt vagy után.

Lap másolása egy másik lap előtt

Itt megadjuk a munkalap másolását és beillesztését a Sheet2 elé

1 Táblázatok ("Sheet1"). Másolás előtt: = Sheets ("Sheet2")

Lap másolása az első lap előtt

A Lap neve megadása helyett megadhatja a Lap pozícióját is. Itt másolunk és beillesztünk egy munkalapot a munkafüzet első lapja elé.

1 Táblázatok ("Sheet1"). Másolás előtt: = Sheets (1)

Az újonnan létrehozott munkalap most lesz a munkafüzet első lapja.

Lap másolása az utolsó lap után

Az After tulajdonság segítségével mondja meg a VBA -nak, hogy illessze be a lapot egy másik lap UTÁN. Itt másolunk és beillesztünk egy munkalapot a munkafüzet utolsó lapja után:

1 Táblázatok ("Sheet1"). Másolás után: = Sheets (Sheets.Count)

Vegye figyelembe, hogy a Táblázatokat használtuk. Számolja a Munkafüzetben lévő Lapok számát.

Lap mozgatása

A munkafüzeten belül egy szintaxist is használhat. Ez a kód áthelyezi az 1. lapot a munkafüzet végére:

1 Táblázatok ("Sheet1"). Lépés után: = Sheets (Sheets.Count)

Másolás és névlap

A munkalap másolása és beillesztése után az újonnan létrehozott lapból ActiveSheet lesz. Tehát az új lap átnevezéséhez egyszerűen használja az ActiveSheet -et. Név:

123456 Sub CopySheetRename1 ()Táblázatok ("Sheet1"). Másolás után: = Sheets (Sheets.Count)ActiveSheet.Name = "LastSheet"End Sub

Ha a munkalap neve már létezik, a fenti kód hibát generál. Ehelyett használhatjuk az „On Error Resume Next” opciót, hogy a VBA figyelmen kívül hagyja a munkalap elnevezését, és folytassa az eljárás többi részével:

12345678 Sub CopySheetRename2 ()Táblázatok ("Sheet1"). Másolás után: = Sheets (Sheets.Count)Hiba esetén Folytassa a következőtActiveSheet.Name = "LastSheet"GoTo 0 hiba eseténEnd Sub

Vagy a RangeExists Funkció segítségével ellenőrizze, hogy létezik -e már a Sheet név, mielőtt megpróbálja másolni a lapot:

123456789101112131415161718 Sub CopySheetRename3 ()Ha RangeExists ("LastSheet") AkkorMsgBox "A lap már létezik."MásTáblázatok ("Sheet1"). Másolás után: = Sheets (Sheets.Count)ActiveSheet.Name = "LastSheet"Vége HaEnd SubFunkciótartomány Létezik (WhatSheet mint karakterlánc, opcionális ByVal WhatRange as karakterlánc = "A1") logikai értékkéntDim teszt As RangeHiba esetén Folytassa a következőtTeszt beállítása = ActiveWorkbook.Sheets (WhatSheet). Range (WhatRange)RangeExists = Hibaszám = 0GoTo 0 hiba eseténVége funkció

Másolás és névlap a cella értéke alapján

Érdemes lehet másolni és elnevezni egy táblázatot egy cellaérték alapján. Ez a kód nevezi el a munkalapot az A1 cella értéke alapján

12345678 Sub CopySheetRenameFromCell ()Táblázatok ("Sheet1"). Másolás után: = Sheets (Sheets.Count)Hiba esetén Folytassa a következőtActiveSheet.Name = Tartomány ("A1"). ÉrtékGoTo 0 hiba eseténEnd Sub

Másolja a munkalapot egy másik munkafüzetbe

Eddig a Munkafüzetben a Táblázatok másolásával dolgoztunk. Most példákat mutatunk be a Táblázatok másolásához és beillesztéséhez más munkafüzetekbe. Ez a kód egy munkalapot másol egy másik munkafüzet elejére:

1 Táblázatok ("Lap1"). Másolás előtt: = Munkafüzetek ("Példa.xlsm"). Táblázatok (1)

Ezzel egy munkalapot másol egy másik munkafüzet végére.

1 Táblázatok ("Sheet1"). Copy After: = Munkafüzetek ("Example.xlsm"). Táblázatok (Munkafüzetek ("Example.xlsm"). Sheets.Count)

Figyeljük meg, hogy kicseréltük 1 val vel Munkafüzetek („Példa.xlsm”). Táblázatok hogy megkapja az utolsó feladatlapot.

Másolja a munkalapot egy zárt munkafüzetbe

Érdemes másolni egy munkalapot egy bezárt munkafüzetbe is. Ez a kód egy zárt munkafüzetet nyit meg, így egy lapot másolhat bele.

123456789 Sub CopySheetToClosedWB ()Application.ScreenUpdating = HamisSet closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")Táblázatok ("Sheet1"). Másolás előtt: = zárt Könyv.Sheets (1)closedBook.Close SaveChanges: = IgazApplication.ScreenUpdating = IgazEnd Sub

Másolja a lapot egy másik munkafüzetből anélkül, hogy megnyitná

Ezzel szemben ez a kód egy munkalapot másol le egy zárt munkafüzetből, anélkül, hogy manuálisan kellene megnyitnia a munkafüzetet.

123456789 Sub CopySheetFromClosedWB ()Application.ScreenUpdating = HamisSet closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")closedBook.Sheets ("Sheet1"). Copy Before: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = HamisApplication.ScreenUpdating = IgazEnd Sub

Figyeljük meg, hogy mindkét példában letiltottuk a ScreenUpdating funkciót, így a folyamat a háttérben fut.

Ismétlődő Excel -lap többször

Loop használatával többször is sokszorosíthat egy Excel -lapot.

1234567891011121314 Sub CopySheetMultipleTimes ()Dim n Mint egészDim i As IntegerHiba esetén Folytassa a következőtn = InputBox ("Hány másolatot szeretne készíteni?")Ha n> 0 AkkorI = 1 -től n -igActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)KövetkezőVége HaEnd Sub

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave