See on 19. nädalane Exceli näpunäide at.com. Paljud Exceli näpunäited hõlmavad mingisugust makrotrikki. Sel nädalal pakun Exceli kasutajatele, kes pole kunagi makrot kirjutanud, aabitsat, kuidas kasulikku Exceli makrot salvestada ja seejärel kohandada.

Oletame, et teil on 400 rida aadressiandmeid, nagu on näidatud vasakul ülemisel joonisel. Nime väli on veerus A, tänava aadress veerus B ja linn veerus C.
Teie eesmärk on teisendada andmed üheks veeruks, nagu on näidatud teisel joonisel.
Seda lihtsat probleemi kasutatakse lihtsa makro salvestamise, muutmise ja seejärel käitamise illustreerimiseks.
Excel 95 kasutajatele: Pärast makro salvestamist paneb Excel teie makro teie töövihiku lehele Module1. Makrole juurdepääsemiseks võite lihtsalt lehel klõpsata.
Kuigi selles töölehel on 400 kirjet, tahan salvestada pisikese makro, mis hoolitseb ainult esimese aadressi eest. Makro eeldab, et cellpointer on eesnimel. See sisestab kolm tühja rida. See kopeerib laht algsest lahtrist paremale lahtrisse, mis asub algse lahtri all. See kopeerib linnaraku lahtrisse 2 rida algse lahtri all. Seejärel peaks see lahtrikursori allapoole viima, nii et see oleks järgmise nime peal.
Peamine on mõelda see protsess enne selle salvestamist läbi. Makro salvestamisel ei taha te palju vigu teha.
Niisiis, pange oma lahtri kursor lahtrisse A1. Minge menüüsse ja valige Tööriistad> Makro> Salvesta uus makro. Dialoog Makro salvestamine soovitab makro1 nime. See on hea, nii et klõpsake nuppu OK.
Exceli makrosalvestil on üks väga rumal vaikeseade, mida peate selle makro toimimiseks kindlasti muutma. Valige rakenduses Excel 95 Tööriistad> Makro> Suhteliste viidete kasutamine. Klõpsake rakenduses Excel 97-2003 nuppu Stop ikooni salvestamise teine ikoon. Ikoon näeb välja nagu pisike tööleht. Punane rakk C3-s osutab teisele punase rakule A3-s. Ikooni nimi on Suhteline viide. Kui see ikoon on sees, on ikooni ümbritsev värv. Ikoon mäletab viimast sätet praegusest Exceli seansist, nii et peate võib-olla paar korda klõpsama, et aru saada, milline meetod on sisse lülitatud või mitte. Rakenduses Excel 2007 kasutage View - Macros - Use Relative References.
OK, oleme valmis minema. Järgige neid samme:
- Lahtrisse B1 liikumiseks vajutage üks kord allanoolt.
- Ridade 2, 3 ja 4 valimiseks hoidke all tõstuklahvi ja vajutage kaks korda allanoolt
- Valige menüüst Lisa ja seejärel kolme tühja rea lisamiseks Ridad.
- Lahtrisse B2 liikumiseks vajutage üles- ja paremnoolt.
- Lahtri B2 lõikamiseks vajutage klahvi Ctrl X.
- Vajutage allanoolt, vasaknoolt ja seejärel klahvi Ctrl V, et kleepida lahtrisse A2.
- Vajutage noolt üles, parem nool, parem nool, Ctrl X, vasak nool, vasak nool, allanool, allanool, Ctrl V, et liikuda C1-st A3-ni.
- Vajutage kaks korda allanoolt, nii et lahtrikursor on nüüd rea A5 järgmisel nimel.
- Makro salvestamise peatamiseks klõpsake tööriistariba ikooni "Lõpeta salvestamine".
Noh, olete salvestanud oma esimese makro. Vaatame järele. Valige Tööriistad> Makro> Makrod. Tõstke loendist esile Macro1 ja vajutage nuppu Redigeeri. Peaksite nägema midagi, mis näeb välja selline.
Sub Macro1() ' ' Macro1 Macro ' Macro recorded 4/18/99 by Reader ' ' ActiveCell.Offset(1, 0).Range("A1:A3").Select Selection.EntireRow.Insert ActiveCell.Offset(-1, 1).Range("A1").Select Selection.Cut ActiveCell.Offset(1, -1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Selection.Cut ActiveCell.Offset(2, -2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(2, 0).Range("A1").Select End Sub
Hei, kui te pole programmeerija, tundub see ilmselt üsna hirmutav. Ära lase sel olla. Kui on midagi, millest te aru ei saa, on suurepärast abi. Klõpsake kursorit kusagil märksõnas Nihe ja vajutage klahvi F1. Kui installite VBA abifaili, näete märksõna Offset abiteemat. Abi ütleb teile lause süntaksi. See ütleb, et see on nihe (RowOffset, ColumnOffset). Ikka pole väga selge? Otsige spikri ülaosast rohelist allajoonitud sõna "näide". Exceli VBA näited võimaldavad teil õppida, mis toimub. Nihe näites öeldakse, et soovite raku aktiveerimiseks kaks rida allpool ja kolm rida paremal praegusest lahtrist:
ActiveCell.Offset(3, 2).Activate
OK, nii et see on vihje. Funktsioon Nihe on viis Exceli arvutustabelis liikumiseks. Arvestades seda natuke teavet, saate omamoodi näha, mida makro teeb. Esimene nihe (1, 0) on see, kus me viisime kärneri alla A2-le. Järgmine nihe on see, kus me liikusime ühe rea võrra (-1 rida) ja üle ühe veeru. Te ei pruugi makros midagi muud mõista, kuid see on siiski kasulik.
Minge tagasi Exceli töölehele. Pange oma lahtrikursor lahtrisse A5. Valige Tööriistad> Makro> Makrod> Makro1> Käivita. Makro töötab ja teie teine aadress on vormindatud.
Võib-olla ütlete, et kogu selle pika suure käsurea valimine on raskem kui lihtsalt käsitsi vormindamine. OK, tehke seejärel Tööriistad> Makro> Makrod> Valikud. Öelge otseteekastis selle makro kiirklahv Ctrl + w. Klõpsake nuppu OK, seejärel sulgege tühistamise abil dialoog Makro. Nüüd, kui vajutate klahvi Ctrl w, töötab makro. Aadressi saate vormindada ühe klahvivajutusega.
Kas olete suureks ajaks valmis? Mitu aadressi teil on alles? Tabasin paar korda klahvi Ctrl wa, nii et mul on 395 alles. Minge tagasi makro juurde. Me paneme kogu makrokoodi silmusesse. Sisestage enne makrokoodi esimest rida uus rida, mis ütleb "Tee kuni activecell.value =" "". Sisestage enne lõpp-alamjoont rida, mis ütleb "Loop". Do-tsükkel täidab kõik joonte Do ja Loop vahel olevad asjad seni, kuni see jookseb tühjale reale. Makro näeb nüüd välja selline:
Sub Macro1() ' ' Macro1 Macro ' Macro recorded 4/18/99 by Reader ' ' Do Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Range("A1:A3").Select Selection.EntireRow.Insert ActiveCell.Offset(-1, 1).Range("A1").Select Selection.Cut ActiveCell.Offset(1, -1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Selection.Cut ActiveCell.Offset(2, -2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(2, 0).Range("A1").Select Loop End Sub
Minge tagasi oma Exceli lehele. Pange lahtrikursor järgmisele nimele. Vajutage klahvi Ctrl w ja makro vormindab kõik teie kirjed mõne sekundi jooksul.
Exceli raamatute autorid ütlevad, et makro salvestamisega ei saa midagi kasulikku teha. Pole tõsi! Inimesele, kes pidi 800 korda lõikama ja kleepima, on see makro väga kasulik. Salvestamine ja kohandamine võttis paar minutit. Jah, professionaalsed programmeerijad juhivad tähelepanu sellele, et kood on kohutavalt ebaefektiivne. Excel paneb sinna terve hulga asju, mida pole vaja sinna panna. Jah, kui teaksite, mida teete, saate sama ülesande täita poolte joontega, mis jooksevad 3 sekundi asemel 1,2 sekundiga. MIS SIIS? 3 sekundit on palju kiirem kui 30 minutit, mille ülesanne oleks võtnud.
Veel mõned näpunäited makrosalvestajate alustamiseks:
- Kasutatav apostroof viitab kommentaarile. VBA ignoreerib kõike pärast apostroofi
- See on objektorienteeritud programmeerimine. Põhisüntaks on object.action. Kui objektorienteeritud kompilaator mängiks jalgpalli, ütleks ta palli löömiseks "ball.kick". Nii et "Selection.Cut" ütleb, et tuleb praeguse valiku jaoks teha "edit> cut".
- Ülaltoodud näites on vahemiku modifikaatorid aktiivse lahtri suhtes. Kui aktiivne lahter asub veerus B2 ja te ütlete "ActiveCell.Range (" A1: C3 "). Valige", siis valite lahtrist B2 algava 3 rea kaupa 3 veeru ala. Teisisõnu, valite B2: D4. Öeldes "ActiveCell.Range (" A1 ")" öeldakse, et valige 1 x 1 lahtrivahemik, alustades aktiivsest lahtrist. See on uskumatult üleliigne. See on samaväärne öeldes "ActiveCell.Select".
- Enne makro esmakordset käivitamist salvestage töövihik. Sel viisil, kui sellel on tõrge ja see teeb midagi ootamatut, saate salvestamata sulgeda ja naasta salvestatud versiooni juurde.
Loodetavasti annab see lihtne näide algajatele makrosalvestajatele julguse salvestada lihtne makro järgmisel korral, kui teil on Excelis korduv ülesanne.