- Zkopírujte list do nového sešitu
- Zkopírujte více listů do nového sešitu
- Kopírovat list do stejného sešitu
- Přesunout list
- Zkopírujte a pojmenujte list
- Zkopírujte pracovní list do jiného sešitu
- Zkopírujte list do uzavřeného sešitu
- Zkopírujte list z jiného sešitu, aniž byste jej museli otevřít
- Duplikovat list Excelu vícekrát
Tento tutoriál se bude zabývat tím, jak kopírovat list nebo list pomocí VBA.
Zkopírujte list do nového sešitu
Zkopírování listu do nového sešitu:
1 | Listy („List1“). Zkopírujte |
Zkopírujte ActiveSheet do nového sešitu
Chcete -li zkopírovat ActiveSheet do nového sešitu:
1 | ActiveSheet.Copy |
Zkopírujte více listů do nového sešitu
Chcete -li zkopírovat více listů do nového sešitu:
1 | ActiveWindow.SelectedSheets.Copy |
Kopírovat list do stejného sešitu
Začali jsme tím, že vám ukážeme nejjednodušší příklad kopírování listů: kopírování listů do nového sešitu. Tyto příklady níže vám ukážou, jak zkopírovat list do stejného sešitu. Při kopírování listu v rámci Worbooku musíte určit umístění. Chcete -li určit umístění, řeknete VBA, aby přesunul list PŘED nebo PO jiném listu.
Kopírování listu před dalším listem
Zde určíme kopírování a vložení listu před list 2
1 | Listy („List1“). Kopírovat před: = Listy („List2“) |
Zkopírujte list před první list
Místo zadání názvu listu můžete také zadat pozici listu. Zde kopírujeme a vkládáme list před první list v sešitu.
1 | Listy („List1“). Kopírovat před: = Listy (1) |
Nově vytvořený list bude nyní prvním listem v sešitu.
Kopírovat list za posledním listem
Pomocí vlastnosti After řekněte VBA, aby vložila list PO dalším listu. Zde zkopírujeme a vložíme list za poslední list v sešitu:
1 | Listy ("List1"). Kopírovat po: = Listy (Sheets.Count) |
Všimněte si, že jsme použili Sheets.Count k spočítání počtu listů v sešitu.
Přesunout list
List můžete také přesunout v sešitu pomocí podobné syntaxe. Tento kód přesune list1 na konec sešitu:
1 | Tabulky ("List1"). Přesunout za: = Listy (Sheets.Count) |
Zkopírujte a pojmenujte list
Po zkopírování a vložení listu se z nově vytvořeného listu stane ActiveSheet. Chcete -li přejmenovat náš nový list, jednoduše použijte ActiveSheet.Name:
123456 | Dílčí kopírovací listRename1 ()Listy ("List1"). Kopírovat po: = Listy (Sheets.Count)ActiveSheet.Name = "Poslední list"End Sub |
Pokud název listu již existuje, výše uvedený kód vygeneruje chybu. Místo toho můžeme použít „On Error Resume Next“ a říci VBA, aby ignorovala pojmenování listu a pokračovala ve zbytku postupu:
12345678 | Dílčí CopySheetRename2 ()Listy ("List1"). Kopírovat po: = Listy (Sheets.Count)Při chybě Pokračovat DalšíActiveSheet.Name = "Poslední list"Při chybě GoTo 0End Sub |
Nebo pomocí naší funkce RangeExists otestujte, zda název listu již existuje, než se pokusíte list zkopírovat:
123456789101112131415161718 | Dílčí kopieSheetRename3 ()Pokud RangeExists ("LastSheet") PakMsgBox "List již existuje."JinýListy ("List1"). Kopírovat po: = Listy (Sheets.Count)ActiveSheet.Name = "Poslední list"Konec IfEnd SubRozsah funkcíExistuje (WhatSheet jako řetězec, volitelně ByVal WhatRange jako řetězec = "A1") jako logická hodnotaDim test As RangePři chybě Pokračovat DalšíNastavit test = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0Při chybě GoTo 0Koncová funkce |
Zkopírujte a pojmenujte list podle hodnoty buňky
Můžete také zkopírovat a pojmenovat list na základě hodnoty buňky. Tento kód pojmenuje list na základě hodnoty buňky v A1
12345678 | Dílčí CopySheetRenameFromCell ()Listy ("List1"). Kopírovat po: = Listy (Sheets.Count)Při chybě Pokračovat DalšíActiveSheet.Name = Rozsah ("A1"). HodnotaPři chybě GoTo 0End Sub |
Zkopírujte pracovní list do jiného sešitu
Doposud jsme pracovali s kopírováním listů v sešitu. Nyní se budeme zabývat příklady kopírování a vkládání listů do jiných sešitů. Tento kód zkopíruje list na začátek jiného sešitu:
1 | Listy ("List1"). Kopírovat před: = Sešity ("Example.xlsm"). Listy (1) |
Tím se zkopíruje list na konec jiného sešitu.
1 | Listy ("List1"). Kopírovat po: = Sešity ("Example.xlsm"). Listy (Sešity ("Example.xlsm"). Sheets.Count) |
Všimněte si, že jsme vyměnili 1 s Sešity („Příklad.xlsm“). Listy. Počet získat poslední pracovní list.
Zkopírujte list do uzavřeného sešitu
Můžete také chtít zkopírovat list do sešitu, který je zavřený. Tento kód otevře uzavřený sešit, takže do něj můžete zkopírovat list.
123456789 | Dílčí kopieSheetToClosedWB ()Application.ScreenUpdating = FalseNastavit closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")Listy („List1“). Kopírovat před: = closedBook.Sheets (1)closedBook.Close SaveChanges: = TrueApplication.ScreenUpdating = TrueEnd Sub |
Zkopírujte list z jiného sešitu, aniž byste jej museli otevřít
Naopak tento kód zkopíruje list z uzavřeného sešitu, aniž byste museli sešit ručně otevírat.
123456789 | Dílčí kopieSheetFromClosedWB ()Application.ScreenUpdating = FalseNastavit closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")closedBook.Sheets ("Sheet1"). Kopírovat před: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = FalseApplication.ScreenUpdating = TrueEnd Sub |
Všimněte si, že v obou těchto příkladech jsme deaktivovali ScreenUpdating, takže proces běží na pozadí.
Duplikovat list Excelu vícekrát
List aplikace Excel můžete také duplikovat vícekrát pomocí smyčky.
1234567891011121314 | Dílčí kopírovací listMultipleTimes ()Dim n jako celé čísloDim i As IntegerPři chybě Pokračovat Dalšín = InputBox („Kolik kopií chcete vytvořit?“)Pokud n> 0 PakPro i = 1 až nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)dalšíKonec IfEnd Sub |