Pozivanje na objekt u vašem VBA kodu važno je jer morate identificirati objekt s kojim želite raditi u Excelu 2016. Uostalom, VBA još ne može čitati vaše misli. Priča se da će objekt za čitanje misli biti uveden u Excel 2019.
Možete raditi s cijelom kolekcijom objekata jednim potezom. Češće, međutim, trebate raditi s određenim objektom u kolekciji (kao što je određeni radni list u radnoj knjizi). Da biste referencirali jedan objekt iz zbirke, stavite naziv objekta ili broj indeksa u zagrade nakon naziva zbirke, ovako:
Radni listovi (“Sheet1”)
Primijetite da je naziv lista pod navodnicima. Ako izostavite navodnike, Excel neće moći identificirati objekt (i pretpostavit će da je to naziv varijable).
Ako je Sheet1 prvi (ili jedini) radni list u zbirci, možete koristiti i sljedeću referencu:
Radni listovi (1)
U ovom slučaju, broj nije pod navodnicima. Poanta? Ako se na objekt pozivate koristeći njegovo ime, koristite navodnike. Ako se na objekt pozivate koristeći njegov indeksni broj, koristite običan broj bez navodnika.
Što je s listovima grafikona? List grafikona sadrži jedan grafikon. Ima karticu lista, ali nije radni list. Pa, kako se ispostavilo, objektni model ima kolekciju pod nazivom Charts. Ova zbirka sadrži sve objekte lista grafikona u radnoj knjizi (i ne uključuje grafikone ugrađene u radni list).
I samo da stvari budu logične, postoji još jedna zbirka pod nazivom Sheets. Zbirka Sheets sadrži sve listove (radne listove i listove grafikona) u radnoj knjizi. Zbirka Sheets je zgodna ako želite raditi sa svim listovima u radnoj knjizi i nije vas briga jesu li to radni listovi ili listovi grafikona.
Dakle, jedan radni list pod nazivom Sheet1 član je dvije zbirke: zbirke Radni listovi i zbirke Sheets. Možete ga pozvati na bilo koji od dva načina:
Radni listovi (“Sheet1”)
Listovi ("Sheet1")
Kretanje kroz hijerarhiju
Ako želite raditi s Excel objektima, svi su pod objektom Application. Stoga počnite upisivanjem Application .
Svaki drugi objekt u Excelovom objektnom modelu nalazi se ispod objekta Application. Do ovih objekata dolazite pomicanjem niz hijerarhiju i povezivanjem svakog objekta na svom putu s operatorom točka (.). Da biste došli do objekta Workbook pod nazivom Book1.xlsx, počnite s objektom Application i idite dolje do objekta zbirke Workbooks:
Application.Workbooks(“Book1.xlsx”)
Za navigaciju dalje do određenog radnog lista, dodajte operator točke i pristupite objektu zbirke Radni listovi:
Application.Workbooks(“Book1.xlsx”).Worksheets(1)
Još niste dovoljno daleko? Ako stvarno želite dobiti vrijednost iz ćelije A1 na prvom radnom listu radne knjige pod nazivom Book1.xlsx, morate prijeći još jednu razinu do objekta Range:
Application.Workbooks(“Book1.xlsx”).Worksheets(1).Range(“A1”).Vrijednost
Kada na ovaj način upućujete na objekt Range, on se naziva potpuno kvalificirana referenca. Rekli ste Excelu točno koji raspon želite, na kojem radnom listu i u kojoj radnoj knjizi, i niste ništa prepustili mašti. Mašta je dobra kod ljudi, ali ne tako dobra u računalnim programima.
Usput, nazivi radnih knjiga također imaju točku za odvajanje naziva datoteke od ekstenzije (na primjer, Book1.xlsx). To je samo slučajnost. Točka u nazivu datoteke nema nikakve veze s operatorom točka.
Pojednostavljivanje referenci na objekte
Kad bi se od vas tražilo da u potpunosti kvalificirate svaku referencu objekta koju napravite, vaš bi kod postao prilično dug i mogao bi biti teži za čitanje. Srećom, Excel vam nudi neke prečace koji mogu poboljšati čitljivost (i uštedjeti vam malo tipkanja). Za početak, uvijek se pretpostavlja objekt Application. Postoji samo nekoliko slučajeva kada ga ima smisla upisati. Izostavljanje reference objekta aplikacije skraćuje primjer na
Radne knjige(“Book1.xlsx”).Radni listovi(1).Raspon(“A1”).Vrijednost
To je prilično dobro poboljšanje. Ali čekajte, ima još toga. Ako ste sigurni da je Book1.xlsx aktivna radna knjiga, možete izostaviti i tu referencu. Sada ste na redu
Radni listovi(1).Raspon(“A1”).Vrijednost
Sada stižete negdje. Jeste li pogodili sljedeći prečac? Tako je. Ako znate da je prvi radni list trenutno aktivni radni list, Excel pretpostavlja tu referencu i omogućuje vam samo upisivanje
Raspon (“A1”).Vrijednost
Suprotno onome što neki ljudi misle, Excel nema objekt Cell. Stanica je jednostavno Raspon objekt koji se sastoji od samo jednog elementa.
Ovdje opisani prečaci su izvrsni, ali mogu biti i opasni. Što ako mislite da je samo Book1.xlsx aktivna radna knjiga? Mogli biste dobiti pogrešku, ili još gore, mogli biste dobiti pogrešnu vrijednost, a da ne shvatite da je to pogrešno. Iz tog razloga, često je najbolje u potpunosti kvalificirati svoje reference na objekt.
Struktura With-End With pomaže vam da u potpunosti kvalificirate svoje reference, ali također pomaže da se kod učini čitljivijim i smanjuje tipkanje. Najbolje od oba svijeta!