Неке функције су дефинисане унутар функције и користе се унутар функција, а неке променљиве су дефинисане изван функција и користе их све функције, а такве променљиве се користе као глобалне променљиве, на пример, променљиве декларисане у оквиру подфункције су познат као Глобал Вариаблес.
Глобална променљива у програму Екцел ВБА
Изјава о променљивој делује прилично једноставно, али да бисмо имали добре руке, морамо да разумемо опсег тих променљивих. Често сваки пут декларишемо променљиве за сваки макро унутар потпроцедуре. Али декларацијом једне променљиве можемо је користити у свим макроима у истом модулу и осталим модулима тренутног ВБА пројекта. У овом чланку ћемо вам показати како да пријавите глобалне променљиве у програму Екцел ВБА.
Шта су глобалне променљиве у програму Екцел ВБА?
ВБА глобалне променљиве су променљиве које су декларисане пре почетка било ког макроа у модулу. Када се променљиве декларишу помоћу „Публиц“ или „Глобал“, она постаје „Глобал Вариабле“.
Варијабле потпроцедура не могу се нигде користити.
Обично декларишемо променљиву унутар потпрограма у ВБА користећи реч „Дим“.

Погледајте горњу слику. Прогласио сам променљиву „к“ као цео број унутар потпроцедуре Глобал_Екампле1.
Претпоставимо да користимо ову променљиву унутар овог Суб поступка у било ком тренутку. Међутим, не могу да користим ову променљиву у другој потпроцедури у истом модулу класе у ВБА или другом модулу.

Као што је приказано на горњој слици, променљива „к“, декларисана у потпоступку Глобал_Екампле1, не може се користити у потпроцедури Глобал_Екампле2.
Слично томе, променљива „ј“ декларисана у потпоступку Глобал_Екампле2 не може се користити у потпроцедури Глобал_Екампле1 иако су оба потпроцедура у истом модулу.
Како прогласити глобалну променљиву у ВБА?
Следе начини декларисања глобалне променљиве у екцелу ВБА.
# 1 - Променљиве модула могу се користити у било којој потпроцедури истог модула
Као што смо видели, не можемо користити променљиве потпроцедура ни у једном модулу. Да бисмо их учинили доступним за све Суб процедуре у истом модулу, променљиве морамо декларисати на врху модула.

На горњој слици променљиву сам прогласио само на почетку модула. Изразила сам променљиву „Мој број“ као целобројно у модулу 1 .
Једном када је променљива декларисана на врху модула, можемо користити исту променљиву за све остале Суб процедуре у истом модулу. У овом случају, можемо користити променљиву „МиНумбер“ за све потпроцедуре у модулу 1.

Проблем је што их не можемо користити ни у једном другом модулу. У овом случају, променљива „Мој број“, декларисана у модулу 1, не може се користити у модулу 2.

# 2 - Глобалне променљиве се могу користити у било којој потпроцедури, као иу било ком модулу
Сада смо видели две врсте декларације променљивих и њихов опсег током употребе. Узбудљиво је што можемо променљиву декларисати у било ком од модула и користити је за све Суб процедуре у свим модулима истог ВБА пројекта.
Да бисмо променљиву учинили доступном за све потпроцедуре у свим модулима, променљиву морамо декларисати на врху модула не користећи реч „Дим“ већ користећи назив „Публиц“ или „Глобал“.

На горњој слици можете видети да сам употребио реч „Јавно“ да бих прогласио променљиву уместо наше ветеранске речи „Дим“.
На горњем снимку екрана прогласио сам променљиву у модулу 1. Имам још два модула, названа Модул 2 и Модул 3.
Будући да сам променљиву прогласио употребом речи „Јавно“ на врху модула, сада им могу приступити у било којој потпроцедури у било ком модулу исте радне свеске.
Не само „Јавно“, већ и реч „Глобал“ можемо да користимо за декларисање променљиве.

Глобал & Публиц су две кључне речи које декларишу променљиву и чине их доступним у свим модулима у ВБА.
Ствари које треба запамтити
- Једном када се екцел макро покрене са вредношћу глобалне променљиве, променљива је иста у свим подпроцедурама.
- Боље је одржавати одређени модул за декларацију глобалних променљивих у ВБА и имати све променљиве у једном модулу.
- Једини начин на који можемо ресетовати вредност променљиве је ресетовањем макро кода притиском на дугме стоп.