- Másolja a munkalapot az új munkafüzetbe
- Több lap másolása az új munkafüzetbe
- Lap másolása ugyanazon a munkafüzeten belül
- Lap mozgatása
- Másolás és névlap
- Másolja a munkalapot egy másik munkafüzetbe
- Másolja a munkalapot egy zárt munkafüzetbe
- Másolja a lapot egy másik munkafüzetből anélkül, hogy megnyitná
- Ismétlődő Excel -lap többször
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 |