Töölehe lisamiseks makro - Exceli näpunäited

Lang L: none (table-of-contents)

"Stuck in NJ" esitas selle nädala küsimuse:

Koostan Exceli töövihiku, mis sisaldab müügiarvude graafikuid. Esimene Exceli tööleht vastab ettevõtte esimesele müügiterritooriumile (nt FL01.) Töölehe vahelehe nimi (samuti lahter A1) on müügiterritooriumi number FL01. Graafikuid juhtivad andmed on paremal (väljaspool minu seatud prinditavat vahemikku) ja need täidetakse mõnest teisest Exceli töövihikust, kasutades otsinguvõtmena lahtris A1 müügiterritooriumi numbrit FL01 sisaldavat VLOOKUP-i. Ma pean lisama töövihikusse 76 ühesugust töölehte (ühe iga müügiterritooriumi kohta) nii, et iga lehe vahelehe nimi ja lahter A1 võrduks järjestikuste müügiterritooriumide numbritega (nt FL01, FL02, LK01, LK02.) Kuidas seda teha automatiseeritud viisil?

VBA makro abil on see hõlpsasti teostatav, kuid lubage mul käsitsi selle tegemiseks näpunäide katta. Kui olete vormindamise ja prindivahemikega seadistanud lehe, saate lehe hõlpsalt dubleerida, paremklõpsates selle lehe vahekaardil. Valige hüpikmenüüst Teisalda või Kopeeri. Valige dialoogiboksist Teisalda või Kopeeri "(teisalda lõpuni)" ja märkige ruut "Loo koopia", seejärel klõpsake nuppu OK. Teie vorminguga lehe koopia lisatakse teie töövihikusse uue töölehena. (Selle protsessi kiirendamiseks hoidke töölehe vahelehte paremale lohistades all klahvi Ctrl.) Tavaliselt soovite lehe ümber nimetada. Paremklõpsake uuel vahelehel, valige ümbernimetamine ja tippige sisukas nimi.

Exceli makro töötamiseks on vaja territooriumide loendit. Enne makro kirjutamist sisestage sellesse raamatusse uus leht nimega Andmed. Lahtrisse A1 sisestage 2. müügiterritoorium (FL02 teie näites). Jätkake veerus A kõigi müügiterritooriumide sisestamist. Ärge jätke tühje ridu.

Sisestage uus makro ja kopeerige see kood:

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 kasutab käsku Sheets (). Copy, mis teeb sama, mis klõpsamine käsul Teisalda või Kopeeri. Enne iga eksemplari tegemist leian atribuutide Sheets.Count abil lehtede arvu. Ma tean, kui on 56 lehte ja sisestan uue lehe, sellele viidatakse kui lehele (57). Minu arvates on mõnevõrra ettearvamatu arvata, kuidas Excel uuele lehele nime paneb, seetõttu kasutan lehe tuvastamiseks numbrilisi indeksnumbreid. Kui olen uue lehe ümber nimetanud "Sheets (LastSheet + 1) .Name = ThisTerr", saan seejärel selle nime abil uuesti oma lehele viitamise eelistatud meetodile minna.

Pange tähele, et territooriumide loend ei tohiks loendis sisaldada FL01. Kui proovite koopiat FL01 sama nimega koopia ümber nimetada, põhjustab see makros tõrke.

Huvitavad Artiklid...