Sklicevanje na predmet v vaši kodi VBA je pomembno, ker morate identificirati predmet, s katerim želite delati v Excelu 2016. Konec koncev, VBA še ne more brati vaših misli. Govori se, da bo objekt za branje misli predstavljen v Excelu 2019.
V enem zamahu lahko delate s celotno zbirko predmetov. Pogosteje pa morate delati z določenim predmetom v zbirki (kot je določen delovni list v delovnem zvezku). Za sklicevanje na posamezen predmet iz zbirke vstavite ime predmeta ali številko indeksa v oklepaje za imenom zbirke, takole:
Delovni listi (»list1«)
Upoštevajte, da je ime lista v narekovajih. Če izpustite narekovaje, Excel ne bo mogel identificirati predmeta (in bo domneval, da je to ime spremenljivke).
Če je Sheet1 prvi (ali edini) delovni list v zbirki, lahko uporabite tudi naslednjo referenco:
Delovni listi (1)
V tem primeru številka ni v narekovajih. Spodnja črta? Če se na predmet sklicujete z njegovim imenom, uporabite narekovaje. Če se na predmet sklicujete z uporabo njegove indeksne številke, uporabite navadno številko brez narekovajev.
Kaj pa listi z grafikoni? List z grafikonom vsebuje en sam grafikon. Ima zavihek lista, vendar ni delovni list. No, kot se je izkazalo, ima objektni model zbirko, imenovano Charts. Ta zbirka vsebuje vse predmete lista grafikonov v delovnem zvezku (in ne vključuje grafikonov, vdelanih v delovni list).
In samo, da ostanejo stvari logične, obstaja še ena zbirka, ki se imenuje Sheets. Zbirka Listi vsebuje vse liste (delovne liste in liste grafikonov) v delovnem zvezku. Zbirka Listi je priročna, če želite delati z vsemi listi v delovnem zvezku in vam ni vseeno, ali so delovni listi ali listi z grafikoni.
Tako je en sam delovni list z imenom Sheet1 član dveh zbirk: zbirke Delovni listi in zbirke Listi. Nanjo se lahko sklicujete na enega od dveh načinov:
Delovni listi (»list1«)
Listi (»List1«)
Krmarjenje po hierarhiji
Če želite delati z Excelovimi predmeti, so vsi pod predmetom Application. Zato začnite tako, da vnesete Application .
Vsak drugi predmet v Excelovem objektnem modelu je pod predmetom Application. Do teh objektov pridete tako, da se pomaknete navzdol po hierarhiji in povežete vsak predmet na poti z operatorjem pika (.). Če želite priti do predmeta Delovni zvezek z imenom Book1.xlsx, začnite s predmetom Application in se pomaknite navzdol do predmeta zbirke Workbooks:
Application.Workbooks(»Book1.xlsx«)
Če se želite pomakniti dlje do določenega delovnega lista, dodajte operator pike in dostopajte do predmeta zbirke Worksheets:
Application.Workbooks(»Book1.xlsx«).Worksheets(1)
Še ni dovolj daleč? Če res želite dobiti vrednost iz celice A1 na prvem delovnem listu delovnega zvezka z imenom Book1.xlsx, se morate pomakniti še na eno raven do predmeta Obseg:
Application.Workbooks(“Book1.xlsx”).Worksheets(1).Range(“A1”).Value
Ko se na ta način sklicujete na objekt Range, se imenuje popolnoma kvalificirana referenca. Excelu ste natančno povedali, kateri obseg želite, na katerem delovnem listu in v katerem delovnem zvezku, in niste ničesar prepustili domišljiji. Domišljija je pri ljudeh dobra, v računalniških programih pa ne tako dobra.
Mimogrede, imena delovnih zvezkov imajo tudi piko, ki loči ime datoteke od pripone (na primer Book1.xlsx). To je samo naključje. Pika v imenu datoteke nima nobene zveze z operatorjem pike.
Poenostavitev sklicevanja na objekte
Če bi morali v celoti kvalificirati vsako sklicevanje na objekt, ki ga naredite, bi bila vaša koda precej dolga in bi jo bilo morda težje brati. Na srečo vam Excel ponuja nekaj bližnjic, ki lahko izboljšajo berljivost (in vam prihranijo nekaj tipkanja). Za začetek se vedno predpostavlja predmet Application. Le redki so primeri, ko ga je smiselno vtipkati. Če izpustite sklicevanje na objekt aplikacije, se primer skrajša na
Delovni zvezki(“Book1.xlsx”).Delovni listi(1).Razpon(“A1”).Vrednost
To je precej dobro izboljšanje. Ampak počakaj, še več je. Če ste prepričani, da je Book1.xlsx aktiven delovni zvezek, lahko tudi to referenco izpustite. Zdaj ste na mestu
Delovni listi(1).Razpon(“A1”).Vrednost
Zdaj ste nekam prišli. Ste uganili naslednjo bližnjico? Tako je. Če veste, da je prvi delovni list trenutno aktiven delovni list, Excel prevzame to referenco in vam omogoči samo tipkanje
Obseg(»A1«).Vrednost
V nasprotju s tem, kar nekateri mislijo, Excel nima predmeta Cell. Celica je preprosto Območje objekt, ki je sestavljen iz samo enega elementa.
Tukaj opisane bližnjice so odlične, vendar so lahko tudi nevarne. Kaj pa, če mislite, da je samo Book1.xlsx aktivni delovni zvezek? Lahko dobite napako ali še huje, lahko dobite napačno vrednost in se sploh ne zavedate, da je narobe. Zaradi tega je pogosto najbolje, da v celoti kvalificirate svoje reference na objekt.
Struktura With-End With vam pomaga v celoti kvalificirati vaše reference, hkrati pa pomaga narediti kodo bolj berljivo in zmanjša tipkanje. Najboljše iz obeh svetov!