У свим програмским језицима имамо спецификаторе приступа променљивим који дефинишу одакле се може приступити дефинисаној променљивој. Екцел ВБА није изузетак. ВБА такође има спецификаторе опсега. Ови спецификатори опсега могу се користити за постављање видљивости/опсега променљиве у Екцел ВБА.
У Екцел ВБА имамо три врсте спецификатора опсега:
- Ниво процедуре
- Приватно - Ниво модула
- Јавно - на нивоу пројекта
Променљиви опсег нивоа ВБА процедуре
Варијаблама које су декларисане унутар потпрограма, може се приступити само у тој процедури/функцији. Они имају опсег на нивоу процедуре. Обично се декларишу помоћу кључне речи Дим. Ако је модул имплицитно опција, онда променљива можда није декларисана, само се користи директно.
У доњем примеру имамо тест опсега потпрограма који има променљиве к и и. Када покренемо прву потпрограм, она савршено ради и штампа збир Кс и И
Опција Екплицит Суб сцопеТест () Дим к, и Као цео број 'Променљива нивоа процедуре у ВБА к = 2 и = 3 дебага. Одштампај к + и Енд Суб Суб сум () к = 5 и = 7 Дебуг.Принт к + и Енд Суб
Али када покренете збир потпрограма, он приказује грешку да променљива није декларисана. Зашто? Пошто су Кс и И приватни за опсег процедуреТест и збир потпрограма немају приступ њима. Отуда подморница наилази на грешку.
ВБА приватна променљива- Опсег нивоа модула
Када желите да декларишете променљиву којој треба приступити у целом модулу, онда промените ту променљиву као приватну на врху модула, пре било које потпрограме или функције.
Варијабле декларисане пре било које потпрограме у модулу су подразумевано приватне. Чак и ако их декларишете помоћу кључне речи Дим. Али да будемо прецизнији, паметно је користити кључну реч Приватно.
Доле наведене две процедуре налазе се у истом модулу, модул 1.
Опција Експлицитна 'Променљива нивоа модула у ВБА. Обе променљиве к и и су приватне за овај модул. и 'може се приступити са било које под -функције или функције у оквиру овог модула. Дим к Ас Интегер Привате и Ас Интегер Суб сцопеТест () 'Овоме се може приступити из било ког модула у пројекту к = 2 и = 3 Дебуг.Принт к + и Енд Суб Приватна сума () 'Овоме се не може приступити из других модула к = 5 и = 7 Дебуг.Принт к + и Енд Суб
Горе наведене две функције ће радити савршено добро јер су променљиве к и и приватне променљиве овог модула.
Важно: Последње вредности сачуване у к и и задржавају се у читавом модулу. Ако прво покренемо суб сцопеТест и не иницијализујемо вредности к и и у суми и покренемо га, тада ће почетна вредност к и и бити непромењена.
Потпрограм испод је дефинисан у засебном модулу, модулу 2. Када покушавам да приступим променљивој из другог модула, ВБА процедура (или функција) наилази на грешку.
Али ако покушам да позовем потпрограм збир из модула 1 у модулу 2, ово савршено функционише. Да бисте своју функцију и потпрограме учинили приватним за модул, употријебите кључну ријеч Приватно прије подфункције и функције.
Белешка:- Варијабле декларисане пре било које потпрограме или функције у модулу су подразумевано приватне за модул. Можете користити Приватнокључна реч. Али функције и потпрограми су подразумевано јавне и њима може приступити било који модул у пројекту. Да бисте функције и потпрограме учинили приватним за модул, морате користити кључну реч Приватно.
Јавне променљиве- Опсег на нивоу пројекта
Као што смо научили у горњим примерима, функција и потпрограми су подразумевано јавне и може им се приступити из било ког модула, али променљиве нису. Да бисте променљиву учинили приступачном из било ког модула у Екцел ВБА,користимо јавну кључну реч.
Да бисте објавили јавну променљиву у пројекту, декларисали сте их на врху модула, пре било које функције или потпрограма са јавном кључном речи. Код испод је написан у модулу 1.
Опција Експлицитна 'Променљива на нивоу пројекта у ВБА. Јавно к Као цео број Јавно и Као цео број Публиц Суб сцопеТест () 'Овоме се може приступити из било ког модула у пројекту к = 2 и = 3 Енд Суб Привате Суб сум ()' Овоме се не може приступити из других модула к = 5 и = 7 Дебуг.Принт к + и Енд Суб
Ова потпрограм је у другом модулу, модулу 2.
Опција Експлицитан Суб мул () Позивни опсегТест 'Збир позива' неће радити јер је приватан за модул 1 Дебуг.Принт к * и Енд Суб
Овај пут ради савршено.
Прво сам назвао подпрограм сцопеТест. Пошто је сцопеТест јавни, назива се. Покреће вредности к и и. Затим множимо к и и. Пошто га је потпрограм сцопеТест иницијализовао вредностима 2 и 3, резултат који добијамо је 6.
Па да, момци, овако можете користити спецификаторе опсега променљивих у Екцелу за контролу видљивости променљивих, функција и потпрограма у Екцел ВБА пројектима.
Покушао сам да објасним приступне спецификације ВБА на најједноставнији начин на који сам могао. Надам се да је било објашњење. Ако имате било каквих недоумица у вези овог чланка или било које друге сумње везане за ВБА, питајте ме у одељку за коментаре испод. Бићу срећан што овде од вас.
Аргументи БиРеф и БиВал | Када се аргумент прослеђује као БиРеф аргумент на другу под -функцију или функцију, шаље се референца стварне променљиве. Све промене направљене у копији променљиве ће се одразити у оригиналном аргументу.
Брисање листова без упита за потврду помоћу ВБА у Мицрософт Екцелу | Пошто бришете листове помоћу ВБА, знате шта радите. Желели бисте да кажете Екцелу да не приказује ово упозорење и да избрише проклети лист.
Додајте и сачувајте нову радну свеску помоћу ВБА у програму Мицрософт Екцел 2016 | У овом коду смо прво креирали референцу на објекат радне свеске. Затим смо га иницијализовали новим објектом радне свеске. Предност овог приступа је што можете лако да радите на овој новој радној свесци. Као чување, затварање, брисање итд
Прикажите поруку на статусној линији програма Екцел ВБА Статусна трака у Екцелу може се користити као монитор кода. Када је ваш ВБА код дугачак и обављате неколико задатака користећи ВБА, често онемогућујете ажурирање екрана тако да не видите да екран трепери
Искључите поруке упозорења помоћу ВБА у програму Мицрософт Екцел 2016 | Овај код не само да онемогућава ВБА упозорења, већ и повећава временску ефикасност кода. Да видимо како.
Популарни чланци:
50 Екцел пречица за повећање продуктивности | Убрзајте свој задатак. Ових 50 пречица ће учинити да радите још брже на Екцелу.
Функција ВЛООКУП у Екцелу | Ово је једна од најчешће кориштених и популарних функција програма Екцел која се користи за тражење вриједности из различитих распона и листова.
ЦОУНТИФ у програму Екцел 2016 | Бројте вредности са условима користећи ову невероватну функцију. Не морате да филтрирате податке да бисте рачунали одређену вредност. Цоунтиф функција је неопходна за припрему ваше контролне табле.
Како се користи функција СУМИФ у програму Екцел | Ово је још једна битна функција контролне табле. Ово вам помаже да сумирате вредности под одређеним условима.