Atsauce uz objektu savā VBA kodā ir svarīga, jo jums ir jāidentificē objekts, ar kuru vēlaties strādāt programmā Excel 2016. Galu galā VBA vēl nevar lasīt jūsu domas. Tiek baumots, ka domu lasīšanas objekts tiks ieviests programmā Excel 2019.
Jūs varat strādāt ar visu objektu kolekciju vienā rāvienā. Tomēr biežāk jums ir jāstrādā ar konkrētu objektu kolekcijā (piemēram, konkrētu darblapu darbgrāmatā). Lai atsauktos uz vienu objektu no kolekcijas, iekavās aiz kolekcijas nosaukuma ievietojiet objekta nosaukumu vai indeksa numuru, piemēram:
Darba lapas (“1. lapa”)
Ņemiet vērā, ka lapas nosaukums ir pēdiņās. Ja izlaidīsiet pēdiņas, programma Excel nevarēs identificēt objektu (un pieņems, ka tas ir mainīgā nosaukums).
Ja Sheet1 ir pirmā (vai vienīgā) darblapa kolekcijā, varat izmantot arī šādu atsauci:
Darba lapas (1)
Šajā gadījumā skaitlis nav pēdiņās. Apakšējā līnija? Ja atsaucaties uz objektu, izmantojot tā nosaukumu, izmantojiet pēdiņas. Ja atsaucaties uz objektu, izmantojot tā indeksa numuru, izmantojiet vienkāršu numuru bez pēdiņām.
Kā ar diagrammu lapām? Diagrammas lapa satur vienu diagrammu. Tam ir lapas cilne, taču tā nav darblapa. Nu, kā izrādās, objekta modelim ir kolekcija ar nosaukumu Charts. Šajā kolekcijā ir visi darbgrāmatas diagrammu lapas objekti (un tajā nav iekļautas darblapā iegultās diagrammas).
Un, lai lietas būtu loģiskas, ir vēl viena kolekcija ar nosaukumu Izklājlapas. Kolekcijā Sheets ir visas darbgrāmatas lapas (darblapas un diagrammu lapas). Kolekcija Sheets ir ērta, ja vēlaties strādāt ar visām darbgrāmatas lapām un nav vienalga, vai tās ir darblapas vai diagrammu lapas.
Tātad viena darblapa ar nosaukumu Sheet1 ietilpst divās kolekcijās: darblapu kolekcijā un izklājlapu kolekcijā. Varat atsaukties uz to divos veidos:
Darba lapas (“1. lapa”)
Izklājlapas (“1. lapa”)
Navigācija pa hierarhiju
Ja vēlaties strādāt ar Excel objektiem, tie visi atrodas lietojumprogrammas objektā. Tāpēc sāciet, ierakstot Application .
Katrs cits Excel objektu modeļa objekts atrodas zem lietojumprogrammas objekta. Jūs varat nokļūt līdz šiem objektiem, virzoties uz leju pa hierarhiju un savienojot katru objektu savā ceļā ar punktu (.) operatoru. Lai nokļūtu darbgrāmatas objektā ar nosaukumu Book1.xlsx, sāciet ar objektu Lietojumprogramma un pārejiet uz leju līdz darbgrāmatu kolekcijas objektam:
Application.Workbooks (“Grāmata1.xlsx”)
Lai pārvietotos tālāk uz noteiktu darblapu, pievienojiet punktu operatoru un piekļūstiet darblapu kolekcijas objektam:
Lietojumprogramma. Darba burtnīcas (“Grāmata1.xlsx”). Darba lapas (1)
Vēl nav pietiekami tālu? Ja tiešām vēlaties iegūt vērtību no šūnas A1 darbgrāmatas pirmajā darblapā ar nosaukumu Book1.xlsx, jums ir jāpārvietojas vēl viens līmenis uz objektu Diapazons:
Lietojumprogramma. Darbgrāmatas (“Grāmata1.xlsx”). Darba lapas (1). Diapazons (“A1”). Vērtība
Ja šādā veidā atsaucaties uz diapazona objektu, to sauc par pilnībā kvalificētu atsauci. Jūs esat Excel precīzi norādījis, kuru diapazonu vēlaties, kurā darblapā un darbgrāmatā, un neko neesat atstājis iztēles ziņā. Iztēle ir laba cilvēkiem, bet ne tik laba datorprogrammās.
Starp citu, darbgrāmatu nosaukumos ir arī punkts, lai atdalītu faila nosaukumu no paplašinājuma (piemēram, Book1.xlsx). Tā ir tikai sakritība. Punktam faila nosaukumā nav nekāda sakara ar punkta operatoru.
Objektu atsauču vienkāršošana
Ja jums būtu pilnībā jākvalificē katra jūsu veiktā objekta atsauce, jūsu kods kļūtu diezgan garš un to varētu būt grūtāk nolasīt. Par laimi, programmā Excel ir daži īsinājumtaustiņi, kas var uzlabot lasāmību (un nevajadzēs rakstīt). Iesācējiem vienmēr tiek pieņemts lietojumprogrammas objekts. Ir tikai daži gadījumi, kad ir jēga to ierakstīt. Izlaižot Lietojumprogrammas objekta atsauci, piemērs tiek saīsināts līdz
Darbgrāmatas (“Grāmata1.xlsx”). Darba lapas (1). Diapazons (“A1”). Vērtība
Tas ir diezgan labs uzlabojums. Bet pagaidiet, tur ir vairāk. Ja esat pārliecināts, ka Book1.xlsx ir aktīvā darbgrāmata, varat arī izlaist šo atsauci. Tagad jūs esat uz leju
Darblapas(1).Diapazons(“A1”).Vērtība
Tagad jūs kaut kur tiekat. Vai esat uzminējis nākamo saīsni? Pareizi. Ja zināt, ka pirmā darblapa ir pašlaik aktīvā darblapa, programma Excel pieņem šo atsauci un ļauj vienkārši rakstīt
Diapazons (“A1”). Vērtība
Pretēji dažu cilvēku domām programmai Excel nav šūnas objekta. Šūna ir vienkārši klase objekts, kas sastāv no tikai viena elementa.
Šeit aprakstītie īsceļi ir lieliski, taču tie var būt arī bīstami. Ko darīt, ja jūs domājat, ka tikai Book1.xlsx ir aktīvā darbgrāmata? Jūs varat saņemt kļūdu vai, vēl ļaunāk, iegūt nepareizu vērtību un pat neapzināties, ka tā ir nepareiza. Šī iemesla dēļ bieži vien vislabāk ir pilnībā kvalificēt savas objektu atsauces.
Struktūra With-End With palīdz pilnībā kvalificēt atsauces, kā arī palīdz padarīt kodu lasāmāku un samazina rakstīšanu. Labākais no abām pasaulēm!