ВБА глобалне променљиве | Како прогласити глобалну променљиву у ВБА?
Неке функције су дефинисане унутар функције и користе се унутар функција, а неке променљиве су дефинисане изван функција и користе их све функције, а такве променљиве се користе као глобалне променљиве, на пример, променљиве декларисане у оквиру подфункције су познат као Глобал Вариаблес.
Глобална променљива у програму Екцел ВБА
Декларација променљиве делује прилично једноставно, али да бисмо имали добре руке над њима, морамо разумети опсег тих променљивих. Често декларишемо променљиве за сваки макро унутар потпроцедуре сваки пут. Али декларирањем једне променљиве можемо је користити у свим макроима у истом модулу, као и у осталим модулима тренутног ВБА пројекта. У овом чланку ћемо вам показати како да пријавите глобалне променљиве у програму Екцел ВБА.
Шта су глобалне променљиве у програму Екцел ВБА?
ВБА глобалне променљиве су променљиве које су декларисане пре почетка било ког макроа у модулу. Када се променљиве декларишу помоћу „Публиц“ или „Глобал“, она постаје „Глобал Вариабле“.
Варијабле потпроцедура не могу се нигде користити
Обично декларишемо променљиву унутар потпрограма у вба користећи реч „Дим“.
Погледајте горњу слику коју сам променљиву „к“ прогласио целим бројем унутар потпроцедуре Глобал_Екампле1.
Ако користимо ову променљиву унутар овог Суб поступка у било ком тренутку. Међутим, не могу да користим ову променљиву у другој потпроцедури у истом модулу класе у ВБА или у другом модулу.
Као што је приказано на горњој слици, променљива „к“ која је декларисана у потпоступку Глобал_Екампле1 не може се користити у потпроцедури Глобал_Екампле2.
Слично томе, променљива „ј“ декларисана у потпоступку Глобал_Екампле2 не може се користити у потпроцедури Глобал_Екампле1 иако су оба потпроцедура у истом модулу.
Како прогласити глобалну променљиву у ВБА?
Следе начини декларисања глобалне променљиве у екцелу ВБА.
# 1 - Променљиве модула могу се користити у било којој потпроцедури истог модула
Као што смо видели, не можемо користити променљиве потпроцедура ни у једном модулу. Да бисмо их учинили доступним за све Суб процедуре у истом модулу, треба да декларишемо променљиве на врху модула.
На горњој слици променљиву сам прогласио само на почетку модула. Прогласио сам променљиву „Мој број“ као целобројно у Модул 1.
Једном када променљива декларисана на врху модула можемо користити исту променљиву за све остале Суб процедуре у истом модулу, у овом случају, можемо користити променљиву „МиНумбер“ за све Суб процедуре у Модул 1.
Проблем је што их не можемо користити ни у једном другом модулу. У овом случају, променљива „МиНумбер“ која је декларисана у Модул 1 не може се користити у Модул 2.
# 2 - Глобалне променљиве се могу користити у било којој потпроцедури, као иу било ком модулу
Сада смо видели две врсте декларације променљивих и њихов опсег током употребе. Интересантно је да променљиву можемо прогласити у било ком од модула и користити за све Суб процедуре у свим модулима истог ВБА пројекта.
Да бисмо променљиву учинили доступном за све подпроцедуре у свим модулима, променљиву морамо прогласити на врху модула не употребом речи „Дим“ већ употребом речи „Публиц“ или „Глобал“.
На горњој слици видите да сам употребио реч „Јавно“ да прогласимо променљиву уместо наше ветеранске речи "Замутити".
На горњем снимку екрана прогласио сам променљиву у Модул 1. Имам још два именована модула Модул 2 и Модул 3.
Будући да сам променљиву прогласио употребом речи „Јавно“ на врху модула, сада им могу приступити у било којој потпроцедури у било ком модулу исте радне свеске.
Не само „Јавно“, већ и реч „Глобал“ можемо да користимо за декларисање променљиве.
Глобал & Публиц су две кључне речи које декларишу променљиву и чине их доступним у свим модулима у ВБА.
Ствари које треба запамтити
- Једном када се екцел макро изврши са променљивом, вредност променљиве је иста у свим подпроцедурама.
- Боље је одржавати одређени модул за декларисање глобалних променљивих у ВБА и имати све променљиве у једном модулу.
- Једини начин на који можемо ресетовати вредност променљиве је ресетовањем макро кода притиском на дугме стоп.