Позивање на објекат у вашем ВБА коду је важно јер морате да идентификујете објекат са којим желите да радите у програму Екцел 2016. На крају крајева, ВБА још увек не може да вам чита мисли. Прича се да ће објекат за читање мисли бити уведен у Екцел 2019.
Можете радити са читавом колекцијом објеката у једном потезу. Чешће, међутим, морате да радите са одређеним објектом у колекцији (као што је одређени радни лист у радној свесци). Да бисте референцирали један објекат из колекције, ставите име објекта или број индекса у заграде иза назива колекције, овако:
Радни листови („Схеет1“)
Обратите пажњу да је назив листа под наводницима. Ако изоставите наводнике, Екцел неће моћи да идентификује објекат (и претпоставиће да је то име променљиве).
Ако је Схеет1 први (или једини) радни лист у колекцији, можете користити и следећу референцу:
Радни листови(1)
У овом случају, број није под наводницима. Суштина? Ако упућујете на објекат користећи његово име, користите наводнике. Ако упућујете на објекат користећи његов индексни број, користите обичан број без наводника.
Шта је са листовима графикона? Лист графикона садржи један графикон. Има картицу листа, али није радни лист. Па, како се испоставило, објектни модел има колекцију под називом Цхартс. Ова колекција садржи све објекте листа графикона у радној свесци (и не укључује графиконе уграђене у радни лист).
И само да би ствари биле логичне, постоји још једна колекција под називом Схеетс. Колекција Схеетс садржи све листове (радне листове и листове графикона) у радној свесци. Колекција Схеетс је згодна ако желите да радите са свим листовима у радној свесци и није вас брига да ли су то радни листови или листови графикона.
Дакле, један радни лист под називом Схеет1 је члан две колекције: колекције Ворксхеетс и колекције Схеетс. Можете га позвати на било који од два начина:
Радни листови („Схеет1“)
Листови („Схеет1“)
Кретање кроз хијерархију
Ако желите да радите са Екцел објектима, сви се налазе у оквиру објекта Апплицатион. Зато почните тако што ћете укуцати Апплицатион .
Сваки други објекат у Екцеловом објектном моделу налази се испод објекта Апплицатион. До ових објеката долазите тако што се крећете низ хијерархију и повезујете сваки објекат на свом путу помоћу оператора тачка (.). Да бисте дошли до објекта Воркбоок под називом Боок1.клск, почните са објектом Апплицатион и идите доле до објекта колекције Воркбоокс:
Апплицатион.Воркбоокс(“Боок1.клск”)
Да бисте се кретали даље до одређеног радног листа, додајте оператор тачке и приступите објекту колекције Ворксхеетс:
Апплицатион.Воркбоокс(“Боок1.клск”).Ворксхеетс(1)
Још нисте довољно далеко? Ако заиста желите да добијете вредност из ћелије А1 на првом радном листу радне свеске под називом Боок1.клск, потребно је да пређете на још један ниво до објекта Ранге:
Апплицатион.Воркбоокс(“Боок1.клск”).Ворксхеетс(1).Ранге(“А1”).Валуе
Када на овај начин упућујете на објекат Ранге, он се назива потпуно квалификована референца. Рекли сте Екцел-у тачно који опсег желите, на ком радном листу и у којој радној свесци, и ништа нисте препустили машти. Машта је добра код људи, али не тако добра у компјутерским програмима.
Иначе, називи радних свеска такође имају тачку за одвајање назива датотеке од екстензије (на пример, Боок1.клск). То је само случајност. Тачка у имену датотеке нема никакве везе са оператором тачке.
Поједностављивање референци на објекте
Ако би се од вас захтевало да у потпуности квалификујете сваку референцу објекта коју направите, ваш код би постао прилично дугачак и могао би бити тежи за читање. На срећу, Екцел вам пружа неке пречице које могу побољшати читљивост (и уштедети вам мало куцања). За почетак, увек се претпоставља објекат Апплицатион. Постоји само неколико случајева када га има смисла откуцати. Изостављање референце објекта апликације скраћује пример на
Радне свеске(“Боок1.клск”).Радни листови(1).Распон(“А1”).Вредност
То је прилично добро побољшање. Али сачекајте, има још. Ако сте сигурни да је Боок1.клск активна радна свеска, можете изоставити и ту референцу. Сада сте на реду
Радни листови(1).Распон(“А1”).Вредност
Сада стижеш негде. Да ли сте погодили следећу пречицу? Тако је. Ако знате да је први радни лист тренутно активан радни лист, Екцел претпоставља ту референцу и дозвољава вам да само куцате
Опсег(“А1”).Вредност
Супротно ономе што неки људи мисле, Екцел нема објекат Целл. Ћелија је једноставно Опсег објекат који се састоји од само једног елемента.
Овде описане пречице су одличне, али могу бити и опасне. Шта ако само да Боок1.клск је активна радна свеска? Можете добити грешку, или још горе, можете добити погрешну вредност, а да чак и не схватите да је то погрешно. Из тог разлога, често је најбоље да у потпуности квалификујете своје референце објеката.
Структура Витх-Енд Витх вам помаже да у потпуности квалификујете своје референце, али такође помаже да се код учини читљивијим и смањује куцање. Најбоље од оба света!