Avaa Excel ja VBE (Visual Basic Editor). Ellei sitä ole muutettu, VBE -ikkuna sisältää Project Explorer ikkuna ja Ominaisuudet ikkuna (näihin pääsee käsiksi Näytä valikko).
Project Explorer: Toimii kuin tiedostonhallinta. Auttaa sinua navigoimaan työkirjasi koodin ympäri.
Ominaisuudet -ikkuna: Näyttää aktiivisen objektin ominaisuudet (esim. Taulukko 1) nykyisen työkirjan (esim.Kirja 1).
Tässä artikkelissa opimme kuinka helppoa makrojen tallentaminen Excelissä on.
Harjoitus 1: Makron tallentaminen.
Tämä harjoitus näyttää, mitä tapahtuu, kun makro tallennetaan, ja osoittaa eron absoluuttisten ja suhteellisten viitteiden tallennuksen välillä.
1. Valitse uuden työkirjan tyhjästä laskentataulukosta solu C10
2. Käynnistä Makrotallennin ja mahdollisuus tallentaa makro sisään Tämä työkirja. Tässä vaiheessa VBE luo uuden Moduulit kansio. On varsin turvallista mennä katsomaan sitä - toimintojasi ei tallenneta. Klikkaa [+] kansion vieressä ja katso, että VBE on sijoittanut moduulin kansioon ja antanut sille nimen Moduuli 1. Avaa moduulin koodi-ikkuna kaksoisnapsauttamalla moduulin kuvaketta. Vaihda takaisin Exceliin.
3.Varmista, että Suhteellinen viite -painiketta Lopeta tallennus työkaluriviä EI paineta sisään.
4. Valitse solu B5 ja pysäytä tallennin.
5. Vaihda VBE -laitteeseen ja katso koodi:
Alue ("B5"). Valitse
6. Tallenna nyt toinen makro täsmälleen samalla tavalla, mutta tällä kertaa Suhteellinen viite painike painettuna sisään.
7. Vaihda VBE -laitteeseen ja katso koodi:
ActiveCell.Offset (-5, -1). Alue ("A1"). Valitse
8. Tallenna nyt toinen makro, mutta sen sijaan, että valitsisit solun B5, valitse solulohko 3x3 alkaen kohdasta B5 (valitse solut B5: F7)
9. Vaihda VBE -laitteeseen ja katso koodi:
ActiveCell.Offset (-5, -1). Alue ("A1: B3"). Valitse
10. Toista makrot, kun olet ensin valinnut toisen solun kuin C10 (Macro2: lle ja Macro3: lle aloitussolun on oltava rivillä 6 tai sen alapuolella - katso vaihe 11 alla)
Makro 1 - siirtää valinnan aina kohtaan B5
Makro2 - siirtää valinnan soluun 5 riviä ylöspäin ja 1 sarakkeen valitun solun vasemmalle puolelle.
Makro3 - valitsee aina kuuden solun lohkon, joka alkaa 5 riviä ylöspäin ja 1 sarake valitun solun vasemmalla puolella.
11. Suorita Macro2, mutta pakota virhe valitsemalla solu riviltä 5 tai sitä ylemmältä. Makro yrittää valita olemattoman solun, koska sen koodi kehottaa valitsemaan solun 5 riviä aloituspisteen yläpuolella, ja se on arkin yläosassa. Lehdistö Virheenkorjaus otettava osa siitä makrosta, joka aiheutti ongelman.
HUOMAUTUS: Kun VBE on virheenkorjaustilassa, ongelman aiheuttanut koodirivi on korostettu keltaisella. Sinun on "nollattava" makro, ennen kuin voit jatkaa. Klikkaa Nollaa -painiketta VBE -työkalurivillä tai siirry kohtaan Suorita> Nollaa. Keltainen korostus katoaa ja VBE poistuu virheenkorjaustilasta.
12. On tärkeää yrittää ennakoida tällainen käyttäjävirhe. Yksinkertaisin tapa on muokata koodia yksinkertaisesti sivuuttaa virheet ja siirtyä seuraavaan tehtävään. Tee tämä lisäämällä rivi…
Virhe Jatka seuraavaksi
… Heti makron ensimmäisen rivin yläpuolella (rivin Sub Macro1 () alla)
13. Juokse Makro2 kuten ennenkin, aloittaen liian korkealta levyltä. Tällä kertaa kirjoittamasi rivi kertoo Excelille, että se jättää huomiotta koodirivin, jota se ei voi suorittaa. Virheilmoitusta ei tule ja makro poistuu tehdessään kaiken voitavansa. Käytä tätä tapaa käsitellä virheitä varoen. Tämä on hyvin yksinkertainen makro. Monimutkaisempi makro ei todennäköisesti toimisi odotetulla tavalla, jos virheet yksinkertaisesti jätettäisiin huomiotta. Lisäksi käyttäjällä ei ole aavistustakaan, että jotain on mennyt pieleen.
14. Muokkaa koodia Makro2 sisällyttää kehittyneempi virhekäsittelijä näin:
Alimakro2 ()
Virhe GoTo ErrorHandler
ActiveCell.Offset (-5, -1). Alue ("A1"). Valitse
Lopeta Sub
ErrorHandler:
MsgBox "Sinun on aloitettava rivin 5 alapuolelta"
End Sub
15. Tällä kertaa käyttäjälle näytetään valintaikkuna, kun jotain menee pieleen. Jos virheitä ei ole, rivi Exit Sub saa makron loppumaan sen jälkeen, kun se on tehnyt tehtävänsä - muuten käyttäjä näkee viestin, vaikka virhettä ei olisi.
Tallennettujen makrojen parantaminen
Hyvä tapa oppia VBA: n perusteet on tallentaa makro ja nähdä, kuinka Excel kirjoittaa oman koodinsa. Usein tallennetut makrot sisältävät kuitenkin paljon enemmän koodia kuin on tarpeen. Seuraavat harjoitukset osoittavat, kuinka voit parantaa ja virtaviivaistaa tallennetun makron tuottamaa koodia.
Harjoitus 2: Tallennettujen makrojen parantaminen
Tämä harjoitus osoittaa, että kun makroja tallennetaan, koodia syntyy usein enemmän kuin on tarpeen. Se osoittaa With -lausekkeen käytön koodin tarkentamiseen.
1. Valitse mikä tahansa solu tai solulohko.
2. Käynnistä makrotallennin ja kutsu makro FormatCells. Suhteelliset viitteet -asetus ei ole relevantti.
3. Siirry kohtaan Muoto> Solut> Fontti ja valitse Times New Roman ja Punainen.
Mene Kuviot ja valitse Keltainen.
Mene Tasaus ja valitse Vaakasuora, keskellä
Mene Määrä ja valitse Valuutta.
4. Napsauta OK ja pysäytä tallennin.
5. Napsauta Kumoa -painiketta (tai Ctrl+Z), jos haluat peruuttaa laskentataulukon muutokset.
6. Valitse solulohko ja suorita FormatCells makro. Huomaa, että sitä ei voi peruuttaa! Tarkista muotoilun tulos kirjoittamalla solut.
7. Katso koodi:
AlaformaattiValinta ()
Selection.NumberFormat = "$#, ## 0.00"
Valinnan kanssa
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = Väärä
Suunta = 0
.ShrinkToFit = Väärä
.MergeCells = Väärä
Lopeta
Valinta.Fontti
.Name = "Times New Roman"
.FontStyle = "Tavallinen"
Koko = 10
.Yliviivaus = epätosi
.Superscript = Väärä
.Subscript = False
.OutlineFont = False
Varjo = väärä
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
Lopeta
Sisältää valinnan
.ColorIndex = 6
.Kuvio = xlKiinteä
.PatternColorIndex = xlAutomatic
Lopeta
End Sub
Vaihda fontti arvoon Times New Roman
Vaihda fontin väri -asetukseksi Punainen
Vaihda täyttöväriksi Keltainen
Klikkaa Keskusta -painiketta
Klikkaa Valuutta -painiketta
13. Katso koodia. Saat edelleen paljon asioita, joita et välttämättä halua. Excel tallentaa kaiken oletusarvo asetukset. Useimmat näistä ovat turvallisia poistaa.
14. Kokeile muokkaamista suoraan koodiin vaihtaaksesi värejä, fonttia, numeromuotoa jne.
Harjoitus 3: Katso makron tallennusta
Tämä harjoitus osoittaa, että voit oppia katsomalla makron rakentamista tallennuksen aikana. Se on myös esimerkki siitä, että joskus With -lause ei ole sopiva.
1. Avaa tiedosto VBA01.xls.
Vaikka tämä laskentataulukko on visuaalisesti OK ja käyttäjän ymmärrettävissä, tyhjät solut voivat aiheuttaa ongelmia. Yritä suodattaa tiedot ja katso mitä tapahtuu. Mene Tiedot> Suodatin> Automaattinen suodatin ja suodata alueen tai kuukauden mukaan. On selvää, että Excel ei tee samoja oletuksia kuin käyttäjä. Tyhjät solut on täytettävä.
2. Laattakaa Excel- ja VBE-ikkunat (pystysuunnassa) siten, että ne ovat vierekkäin.
3. Valitse mikä tahansa solu tiedoista. Jos solu on tyhjä, sen on oltava dataa sisältävän solun vieressä.
4. Käynnistä makrotallennin ja soita makroon FillEmptyCells. Aseta nauhoittamaan Suhteelliset viitteet.
5. Etsi ja kaksoisnapsauta VBE-ikkunassa nykyisen työkirjan moduulia (Module1), jolloin avaat muokkausruudun, ja sammuta sitten Project Explorer -ikkuna ja Ominaisuudet-ikkuna (vain tilan vapauttamiseksi).
6. Tallenna uusi makro seuraavasti:
Vaihe 1. Ctrl+* (nykyisen alueen valitsemiseksi)
Vaihe 2. Muokkaa> Siirry> Erikois> Tyhjät> OK (valitaksesi kaikki tyhjät solut nykyisellä alueella)
Vaihe 3. Kirjoita = [UpArrow] paina sitten Ctrl+Enter (kirjoittamalla kaikki valitut solut)
Vaihe 4. Ctrl+* (nykyisen alueen valitsemiseksi uudelleen)
Vaihe 5. Ctrl+C (valinnan kopiointi - mikä tahansa menetelmä sopii)
Vaihe 6. Muokkaa> Liitä erikoisasetukset> Arvot> OK (liittää tiedot takaisin samaan paikkaan, mutta hylkää kaavat)
Vaihe 7. poistu (poistua kopiointitilasta)
Vaihe 8. Lopeta tallennus.
7. Katso koodi:
Sub FillEmptyCells ()
Selection.CurrentRegion.Select
Selection.SpecialCells (xlCellTypeBlanks) Valitse
Valinta.KaavaR1C1 = "= R [-1] C"
Selection.CurrentRegion.Select
Valinta Kopioi
Selection.PasteSpecial Paste: = xlValues, Operation: = xlNone, SkipBlanks: = _
False, Transpose: = False
Application.CutCopyMode = Väärä
End Sub
8. Huomaa välilyönnin ja alaviivan "_" käyttö, joka tarkoittaa yksittäisen koodirivin jakamista uudelle riville. Ilman tätä Excel käsittelisi koodin kahdena erillisenä lauseena.
9. Koska tämä makro on tallennettu hyvin harkituilla komennoilla, tarpeetonta koodia on vähän. Kohteessa Liitä erityinen kaikki sanan "xlValues" jälkeen voidaan poistaa.
10. Kokeile makroa. Käytä sitten automaattisen suodattimen työkalua ja huomaa ero.