Makro na vloženie pracovného hárka - tipy pre program Excel

Obsah

„Stuck in NJ“ položilo otázku tento týždeň:

Vytváram zošit programu Excel, ktorý obsahuje grafy predajných čísel. Prvý pracovný hárok programu Excel zodpovedá prvému predajnému územiu v spoločnosti (napr. FL01.) Názov karty tohto hárka (rovnako ako bunka A1) je číslo predajného územia FL01. Údaje, ktoré riadia grafy, sú vpravo (mimo tlačiteľného rozsahu, ktorý som nastavil) a sú vyplnené z iného zošita programu Excel pomocou programu VLOOKUP s číslom predajného územia FL01 v bunke A1 ako vyhľadávacím kľúčom. Musím do zošita pridať 76 rovnakých pracovných hárkov (jeden pre každé predajné územie), aby sa názov záložky a bunka A1 každého listu rovnal postupným číslam predajného územia (napr. FL01, FL02, LK01, LK02.) Ako to urobím automatizovaným spôsobom?

To sa dá ľahko dosiahnuť pomocou makra VBA, ale dovoľte mi zakryť tip, ako to robiť ručne. Keď máte nastavený hárok s rozsahmi formátovania a tlače, môžete ho ľahko duplikovať kliknutím pravým tlačidlom myši na kartu daného hárka. Z rozbaľovacej ponuky vyberte možnosť Presunúť alebo Kopírovať. V dialógovom okne Presunúť alebo Kopírovať vyberte možnosť „(presunúť na koniec)“, začiarknite políčko „Vytvoriť kópiu“ a potom kliknite na tlačidlo OK. Kópia vášho listu s formátovaním bude pridaná ako nový pracovný hárok do vášho zošita. (Tento proces urýchlite podržaním klávesu Ctrl a ťahaním karty hárka doprava.) Hárok budete zvyčajne chcieť premenovať. Kliknite pravým tlačidlom myši na novú kartu, zvoľte premenovať a zadajte zmysluplný názov.

Aby makro Excel fungovalo, potrebuje zoznam teritórií. Pred napísaním makra vložte do tejto knihy nový hárok s názvom Údaje. V bunke A1 zadajte druhé územie predaja (vo vašom príklade FL02). Pokračujte v zadávaní všetkých teritórií predaja nadol do stĺpca A. Nenechávajte prázdne riadky.

Vložte nové makro a skopírujte tento kód:

Public Sub CopyIt() Sheets("Data").Select ' Determine how many territories are on Data sheet FinalRow = Range("A65000").End(xlUp).Row ' Loop through each territory on the data sheet For x = 1 To FinalRow LastSheet = Sheets.Count Sheets("Data").Select ThisTerr = Range("A" & x).Value ' Make a copy of Fl01 and move to end Sheets("FL01").Copy After:=Sheets(LastSheet) ' rename the sheet and set A1 = to the territory name Sheets(LastSheet + 1).Name = ThisTerr Sheets(ThisTerr).Select Range("A1").Value = ThisTerr Next x End Sub

Makro využíva príkaz Sheets (). Copy, ktorý robí to isté ako kliknutie na Move alebo Copy ručne. Pred vykonaním každej kópie zistím počet hárkov pomocou vlastnosti Sheets.Count. Viem, že ak existuje 56 listov a vložím nový list, bude sa na ne odkazovať ako na listy (57). Považujem za trochu nepredvídateľné hádať, ako bude Excel pomenovať nový hárok, takže na jeho identifikáciu používam číselné číselné čísla. Po premenovaní nového hárka na „Tabuľky (LastSheet + 1) .Name = ThisTerr“ sa potom môžem prepnúť späť na svoj preferovaný spôsob odkazovania na hárok pomocou jeho názvu.

Upozorňujeme, že zoznam území by nemal obsahovať FL01. Pokus o premenovanie kópie na kópiu FL01 s rovnakým názvom spôsobí chybu v makre.

Zaujímavé články...