Excelin Objektimallin Ymmärtäminen
Pyyhkäise näyttääksesi valikon
Jokainen Excelissä kirjoittamasi VBA-rivi on lause objekteista: jokin on olemassa (Application, Workbook, Worksheet, Range), ja joko luet sen ominaisuuden tai pyydät sitä suorittamaan jonkin metodin. Kun tämä hierarkia avautuu, loppu kielestä on lähinnä sanastoa.
Hierarkian lukeminen
- Application — koko käynnissä oleva Excel-ohjelma; jokaisen hierarkian ylin taso;
- Workbooks — kaikkien avoinna olevien tiedostojen kokoelma; yksittäinen tiedosto on Workbook, esim.
Section_1_VBA_Intro.xlsm; - Worksheets — työkirjan välilehtien kokoelma; yksittäinen välilehti on Worksheet, esim. "Employees";
- Range — yksi solu, solualue, kokonainen rivi tai kokonainen sarake;
- Cells / Value — varsinainen tieto, joka sijaitsee Range-alueella.
Koko ketjua Applicationista alaspäin tarvitsee harvoin kirjoittaa — VBA olettaa, että tarkoitat aktiivista työkirjaa ja aktiivista välilehteä, ellet toisin määrittele — mutta objektien nimeäminen tarkasti erottaa hauraan koodin luotettavasta. Vertaa näitä kahta tapaa kirjoittaa sama ohje:
' Fragile — depends on whatever sheet happens to be active
Range("F2").Value = 65000
' Reliable — states exactly which workbook and sheet, no matter what's on screen
ThisWorkbook.Worksheets("Employees").Range("F2").Value = 65000
Toinen versio toimii edelleen, vaikka käyttäjällä olisi kolme muuta työkirjaa auki ja eri taulukko valittuna — tapa, jolla on valtava merkitys, kun makrosi kasvavat muutamaa riviä pidemmiksi. Tulet käyttämään ThisWorkbook.Worksheets("SheetName") tällä tavalla jatkuvasti loppukurssin ajan.
Objektisuhteiden navigointi Immediate-ikkunassa
Immediate-ikkuna (Näytä → Immediate-ikkuna tai Ctrl+G VBE:ssä; ^ ⌘ G Macilla) mahdollistaa yksittäisen koodirivin testaamisen ilman, että sitä tarvitsee sijoittaa Sub-rakenteeseen.


Kirjoita rivi, joka alkaa kysymysmerkillä, ja paina Enter nähdäksesi tuloksen välittömästi. Kokeile näitä komentoja tiedostolla Section_1_VBA_Intro.xlsm:
?ThisWorkbook.Name
?ThisWorkbook.Worksheets("Employees").Range("B3").Value
?ThisWorkbook.Worksheets("Employees").Range("A1").CurrentRegion.Address
?ThisWorkbook.Worksheets.Count
Kolmas rivi esittelee CurrentRegion-ominaisuuden, joka laajentaa yksittäisestä solusta koko yhtenäiseen tietolohkoon sen ympärillä.
Tehtävä
- Kirjoita Välitön ikkuna -ikkunaan yksi rivi, joka tulostaa
Olivia Brownin (rivi 4) tehtävän ilman, että klikkaat solua ensin — viittaa siihen suoraan objektihierarkian kautta. - Kirjoita toinen rivi, joka tulostaa, kuinka monta riviä Employees-taulukossa on käyttäen
CurrentRegion.Rows.Count.
Viittaa siihen näin: ThisWorkbook.Worksheets("Employees").Range("D4").Value — rivi 4 on Olivia Brown, sarake D on tehtävä.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme