Разбирање на променливите и константите во макроата на Excel

Во оваа статија ќе научите кои се константите и променливите во макроата, каде може да се користат и која е главната разлика помеѓу различните типови на податоци. Исто така, ќе се открие зошто се потребни константи, ако можете само да напишете променлива и никогаш да не ја менувате.

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

Константите можат да бидат корисни ако треба да ја користите истата голема вредност повеќе пати. Наместо да го копирате бројот, можете едноставно да го напишете името на константата. На пример, можете да ја користите константата „Pi“ за складирање на Pi, што е константна вредност. Тој е многу голем, и секој пат е доста тешко да го напишете или да го пребарувате и копирате. И така, доволно е да напишете два знака, а околината автоматски го користи саканиот број.

Корисникот на Excel треба да декларира променливи ако треба одвреме-навреме да ја менува вредноста зачувана во нив. На пример, можете да поставите променлива наречена sVAT_Rate, која ќе ја зачува тековната стапка на ДДВ за производот. Ако се промени, можете брзо да го поправите. Ова е особено корисно за оние кои работат во Соединетите Држави, каде што некои стоки можеби воопшто не подлежат на ДДВ (а овој данок исто така се разликува од држава до држава).

Видови податоци

Секој контејнер со податоци може да биде еден од неколкуте типови. Еве табела која ги опишува стандардните типови на обработени информации. Има многу од нив, а на почетник на почетокот може да му се чини дека се повторуваат еден со друг. Но, ова е илузорно чувство. Прочитајте понатаму за да дознаете зошто е толку важно одредувањето на точниот тип на податоци.

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

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

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

За да се декларира променлива, се користи исказот Dim. На пример, вака:

Dim Variable_Name како цел број

Variable_Name е името на променливата. Следно, операторот As е напишан, означувајќи го типот на податоци. Наместо низите „Variable_Name“ и „Integer“, можете да вметнете свое име и тип на податоци.

Може да се декларираат и константи, но прво мора да ја наведете нивната вредност. Една од опциите е:

Const iMaxCount = 5000

За волја на вистината, во некои случаи можете да направите без декларирање на променлива, но во овој случај автоматски ќе им се додели типот Variant. Сепак, ова не се препорачува од следниве причини:

  1. Варијантата се обработува многу побавно, а ако има многу такви променливи, обработката на информации може значително да се забави на слаби компјутери. Се чини дека тие секунди ќе одлучат? Но, ако треба да напишете голем број линии код, а потоа и да го стартувате на слаби компјутери (кои сè уште се продаваат, имајќи предвид дека модерните канцелариски апартмани бараат многу RAM меморија), можете целосно да ја прекинете работата. Има случаи кога лошо замисленото пишување на макроа довело до замрзнување на паметните книги кои имаат мала количина на RAM меморија и не се дизајнирани да извршуваат сложени задачи. 
  2. Дозволени се погрешни отпечатоци во имињата, што може да се спречи со користење на изјавата Option Explicit, која ви овозможува да пронајдете непријавена променлива, доколку се пронајде. Ова е лесен начин за откривање на грешки, бидејќи најмала печатна грешка предизвикува толкувачот да не може да ја идентификува променливата. И ако го вклучите режимот за декларација на променлива, толкувачот едноставно нема да ви дозволи да го извршите макрото ако се најдат контејнери со податоци што не беа декларирани на самиот почеток на модулот.
  3. Избегнувајте грешки предизвикани од променливите вредности кои не се совпаѓаат со типот на податоци. Нормално, доделувањето текстуална вредност на цела променлива ќе предизвика грешка. Да, од една страна, генерички тип се доделува без декларација, но ако тие се однапред декларирани, тогаш може да се избегнат случајни грешки.

Затоа, и покрај се, многу се препорачува да се декларираат сите променливи во макроата на Excel.

Има уште една работа што треба да се има на ум при декларирање на променливи. Можно е да не се доделат никакви вредности на променливата при нејзиното декларирање, но во овој случај таа добива стандардна вредност. На пример:

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

На пример, не треба да ја доделите вредноста 0 на цела променлива ако претходно не била одредена вредност. Таа веќе го содржи овој број.

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

Оваа изјава ви овозможува да ги декларирате сите променливи што се користат во кодот VBA и да го одредите присуството на какви било непријавени контејнери пред да се изврши кодот. За да ја користите оваа одлика, едноставно напишете линија со Option Explicit код на самиот врв на макро кодот.

Ако треба да ја вклучите оваа изјава во вашиот код секој пат, можете да го направите тоа користејќи специјална поставка во уредникот VBA. За да ја овозможите оваа опција, мора:

  1. Одете во развојната средина по патеката – Алатки > Опции.
  2. Во прозорецот што се отвора после ова, отворете го табот Уредувач.
  3. И, конечно, штиклирајте го полето до ставката Потребна декларација за променлива.

По завршувањето на овие чекори, кликнете на копчето „OK“. 

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

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

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

Да претпоставиме дека имаме функција Вкупните трошоци(), и ја користи променливата sVAT_Rate. Во зависност од позицијата во модулот, тој ќе има различен опсег:

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

Затемнети sVAT_Rate As Single

Функција Total_Cost() како двојно

.

.

.

Крајот функција

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

Покрај тоа, ако една од постапките ја смени вредноста на променливата, тогаш следната ќе ја прочита и оваа поправена вредност. Но, во другите модули оваа променлива сè уште нема да се чита.

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

Функција Total_Cost() како двојно

Затемнети sVAT_Rate As Single

   .

   .

   .

Крајот функција

Во овој случај, променливата се декларира внатре во процедурата, а толкувачот ќе направи грешка доколку се користи во друга постапка.

Ако сакате променливата да се чита од други модули, мора да го користите Јавниот клучен збор наместо клучниот збор Dim. Слично на тоа, можете да го ограничите опсегот на променливата само на тековниот модул со користење на изјавата Public, која е напишана наместо зборот Dim.

Можете да го поставите опсегот на константите на сличен начин, но клучниот збор овде е напишан заедно со операторот Const.

Еве табела со добар пример за тоа како работи со константи и променливи.

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

Јавна sVAT_Rate As Single

Јавна потрошувачка iMax_Count = 5000

Во овој пример, можете да видите како клучниот збор Јавен се користи за декларирање на променлива и што треба да напишете во уредувачот на Visual Basic за да декларирате јавна константа. Опсегот на овие вредносни контејнери се однесува на сите модули.
Опција експлицитна

Приватен sVAT_Rate As Single

Приватен Const iMax_Count = 5000

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

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

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

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

Ова е особено важно кога макрото е напишано од неколку програмери. Можеби некој знае дека некоја променлива не треба да се менува. А другиот не е. Ако го наведете операторот Const, друг програмер ќе знае дека оваа вредност не се менува.

Или, ако има константа со едно име, а променливата има различно, но слично име. Инвеститорот едноставно може да ги збуни. На пример, една променлива што не треба да се менува се нарекува Variable11, а друга што може да се уредува се нарекува Variable1. Едно лице може автоматски, кога пишува код, случајно да прескокне дополнителна единица и да не ја забележи. Како резултат на тоа, садот за вредности ќе се смени, што не треба да се допира.

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

Да, можете да направите со коментари во оваа ситуација, но зарем не е полесно да го наведете зборот Const?

Заклучоци

Променливите се суштинска компонента на макро програмирањето, кои ви овозможуваат да вршите сложени операции, од пресметки до информирање на корисникот за одредени настани или специфицирање на специфични вредности во ќелиите на табела.

Треба да се користат константи ако развивачот со сигурност знае дека содржината на овие контејнери нема да се промени во иднина. Се препорачува да не се користат променливи наместо тоа, бидејќи е можно случајно да се направи грешка.

Оставете Одговор