Разумевање променљивих и константи у Екцел макроима

У овом чланку ћете научити које су константе и променљиве у макроима, где се могу користити и која је главна разлика између различитих типова података. Такође ће бити откривено зашто су потребне константе, ако можете само да напишете променљиву и никада је не мењате.

Као и други програмски језици, подаци се могу чувати у променљивим или константама (обоје се такође често назива контејнерима података). Ово је главна разлика између ових концепата. Прво се може променити у зависности од тога шта се дешава у програму. Заузврат, константе се постављају једном и не мењају своју вредност.

Константе могу бити корисне ако треба да користите исту велику вредност више пута. Уместо да копирате број, можете једноставно написати име константе. На пример, можете користити константу „Пи“ за чување Пи, што је константна вредност. Веома је велика и сваки пут је прилично тешко написати је или претражити и копирати. И тако, довољно је написати два знака, а окружење аутоматски користи жељени број.

Корисник Екцел-а треба да декларише променљиве ако треба с времена на време да промени вредност која је у њима ускладиштена. На пример, можете поставити променљиву под називом сВАТ_Рате, која ће чувати тренутну стопу ПДВ-а за производ. Ако се промени, можете га брзо исправити. Ово је посебно корисно за оне који послују у Сједињеним Државама, где нека добра можда уопште не подлежу ПДВ-у (а овај порез се такође разликује од државе до државе).

Типови података

Сваки контејнер података може бити један од неколико типова. Ево табеле која описује стандардне типове обрађених информација. Има их много, а почетнику се у почетку може учинити да се понављају. Али ово је илузорно осећање. Читајте даље да бисте сазнали зашто је навођење исправног типа података толико важно.

Не препоручује се коришћење типа података који заузима више простора у меморији за мале бројеве. На пример, за број 1 довољно је користити тип Бите. Ово ће позитивно утицати на перформансе извршног модула, посебно на слабим рачунарима. Али овде је важно не ићи предалеко. Ако користите тип података који је превише компактан, превелика вредност можда неће стати у њега.

Декларисање константи и променљивих

Употреба контејнера са подацима без претходног декларисања се не препоручује. Тада се може појавити низ проблема, да би се избегли, потребно је написати неколико малих линија кода са набрајањем променљивих или константи.

За декларисање променљиве користи се наредба Дим. На пример, овако:

Дим Име_променљиве као цео број

Вариабле_Наме је име променљиве. Затим се уписује оператор Ас, који означава тип података. Уместо стрингова „Вариабле_Наме“ и „Интегер“, можете уметнути своје име и тип података.

Константе се такође могу декларисати, али прво морате навести њихову вредност. Једна од опција је:

Цонст иМакЦоунт = 5000

Искрено речено, у неким случајевима можете без декларисања променљиве, али у овом случају ће им аутоматски бити додељен тип Вариант. Међутим, ово се не препоручује из следећих разлога:

  1. Варијанта се обрађује много спорије, а ако таквих варијабли има много, обрада информација може бити значајно успорена на слабим рачунарима. Чини се да ће те секунде одлучити? Али ако морате да напишете велики број линија кода, а затим да га покренете и на слабим рачунарима (који се још увек продају, с обзиром на то да савремени канцеларијски пакети захтевају много РАМ-а), можете потпуно зауставити рад. Постоје случајеви када је лоше осмишљено писање макроа довело до замрзавања паметних рачунара који имају малу количину РАМ-а и нису дизајнирани за обављање сложених задатака. 
  2. Грешке у именима су дозвољене, што се може спречити коришћењем наредбе Оптион Екплицит, која вам омогућава да пронађете недекларисану променљиву, ако је пронађена. Ово је лак начин да се открију грешке, јер и најмања грешка у куцању доводи до тога да тумач не може да идентификује променљиву. А ако укључите режим декларације променљиве, тумач вам једноставно неће дозволити да покренете макро ако се пронађу контејнери података који нису декларисани на самом почетку модула.
  3. Избегавајте грешке узроковане променљивим вредностима које не одговарају типу података. Обично, додељивање текстуалне вредности целобројној променљивој изазива грешку. Да, с једне стране, генерички тип се додељује без декларације, али ако су унапред декларисани, онда се могу избећи случајне грешке.

Због тога је, упркос свему, веома препоручљиво декларисати све варијабле у Екцел макроима.

Постоји још једна ствар коју треба имати на уму када декларишете променљиве. Могуће је да променљивој не доделите никакве вредности када је декларишете, али у овом случају она добија подразумевану вредност. На пример:

  1. Линије су празне.
  2. Бројеви добијају вредност 0.
  3. Променљиве типа Боолеан у почетку се сматрају нетачним.
  4. Стандардни датум је 30. децембар 1899. године.

На пример, не морате да доделите вредност 0 целобројној променљивој ако ниједна вредност није претходно наведена. Она већ садржи овај број.

Опција Експлицитна изјава

Ова изјава вам омогућава да декларишете све варијабле које се користе у ВБА коду и одредите присуство било којих недекларисаних контејнера пре него што се код покрене. Да бисте користили ову функцију, једноставно напишите линију Оптион Екплицит кода на самом врху кода макроа.

Ако треба да укључите ову изјаву у свој код сваки пут, то можете учинити помоћу посебне поставке у ВБА едитору. Да бисте омогућили ову опцију, морате:

  1. Идите у развојно окружење дуж путање – Алатке > Опције.
  2. У прозору који се отвори након овога отворите картицу Едитор.
  3. И на крају, означите поље поред ставке Захтевај декларацију променљиве.

По завршетку ових корака, кликните на дугме „ОК“. 

То је то, сада када пишете сваки нови макро, ова линија ће се аутоматски уметнути на врх кода.

Опсег константи и променљивих

Свака променљива или константа има само ограничен опсег. Зависи где то декларишете.

Претпоставимо да имамо функцију Укупни трошкови(), и користи променљиву сВАТ_Рате. У зависности од позиције у модулу, имаће различит опсег:

Опција експлицитно

Дим сВАТ_Рате Ас Сингле

Функција Тотал_Цост() Ас Доубле

.

.

.

Енд Фунцтион

Ако је променљива декларисана на врху самог модула, она се шири кроз тај модул. Односно, може се прочитати сваком процедуром.

Штавише, ако је једна од процедура променила вредност променљиве, онда ће следећа такође прочитати ову исправљену вредност. Али у другим модулима ова променљива се и даље неће читати.

Опција експлицитно

Функција Тотал_Цост() Ас Доубле

Дим сВАТ_Рате Ас Сингле

   .

   .

   .

Енд Фунцтион

У овом случају, променљива је декларисана унутар процедуре, а тумач ће бацити грешку ако се користи у другој процедури.

Ако желите да променљиву читају други модули, морате користити кључну реч Публиц уместо кључне речи Дим. Слично, можете ограничити опсег променљиве само на тренутни модул коришћењем изјаве Публиц, која је написана уместо речи Дим.

Обим константи можете подесити на сличан начин, али се кључна реч овде пише заједно са Цонст оператором.

Ево табеле са добрим примером како функционише са константама и променљивим.

Опција експлицитно

Јавни сВАТ_Рате Ас Сингле

Публиц Цонст иМак_Цоунт = 5000

У овом примеру можете видети како се кључна реч Публиц користи за декларисање променљиве и шта треба да напишете у уређивачу Висуал Басиц-а да бисте прогласили јавну константу. Опсег ових контејнера вредности се односи на све модуле.
Опција експлицитно

Приватни ПДВ_Рате Ас Сингле

Приватни Цонст иМак_Цоунт = 5000

Овде се променљиве и константе декларишу помоћу кључне речи Привате. То значи да се могу видети само унутар тренутног модула, а процедуре у другим модулима их не могу користити.

Зашто су потребне константе и променљиве

Употреба константи и променљивих вам омогућава да повећате степен разумљивости кода. А ако почетници уопштено немају питања зашто су потребне варијабле, онда постоји много нејасноћа у вези са потребом за константама. И ово питање изгледа, на први поглед, сасвим логично. На крају крајева, можете декларисати променљиву једном и никада је више не мењати.

Испоставило се да је одговор негде у истој равни као иу погледу употребе типова података који заузимају велики простор у меморији. Ако имамо посла са огромним бројем варијабли, можемо случајно променити постојећи контејнер. Ако корисник пропише да се одређена вредност никада неће променити, окружење ће то аутоматски контролисати.

Ово је посебно важно када макро пише неколико програмера. Човек може знати да нека варијабла не треба да се мења. А други није. Ако наведете Цонст оператор, други програмер ће знати да се ова вредност не мења.

Или, ако постоји константа са једним именом, а променљива има другачије, али слично име. Програмер их може једноставно збунити. На пример, једна променљива која не треба да се мења зове се Променљива11, а друга која се може уређивати зове се Променљива1. Особа може аутоматски, приликом писања кода, случајно прескочити додатну јединицу и не приметити је. Као резултат тога, контејнер за вредности ће бити промењен, који не треба дирати.

Или сам програмер може заборавити које варијабле може да додирне, а које не. Ово се често дешава када се код пише неколико недеља, а његова величина постаје велика. За то време врло је лако заборавити чак и шта значи ова или она варијабла.

Да, у овој ситуацији можете са коментарима, али зар није лакше навести реч Цонст?

Закључци

Променљиве су суштинска компонента макро програмирања, које вам омогућавају да обављате сложене операције, од прорачуна до информисања корисника о одређеним догађајима или навођења одређених вредности у ћелијама табеле.

Константе треба користити ако програмер сигурно зна да се садржај ових контејнера неће променити у будућности. Препоручује се да се не користе променљиве уместо тога, јер је могуће случајно направити грешку.

Ostavite komentar