Променљиве играју велику улогу у већини Екцел макроа са којима се сусрећете. О променљивим можете размишљати као о меморијским контејнерима које можете користити у својим процедурама. Постоје различите врсте варијабли, од којих свака има задатак да држи одређену врсту података.
Следе неке од уобичајених типова варијабли које ћете видети:
-
Стринг: Садржи текстуалне податке
-
Цео број: Садржи нумеричке податке у распону од –32,768 до 32,767
-
Лонг: Садржи нумеричке податке у распону од –2,147,483,648 до 2,147,483,647
-
Доубле: Садржи нумеричке податке са покретним зарезом
-
Варијанта: Садржи било коју врсту података
-
Боолеан: Садржи бинарне податке који враћају Тачно или Нетачно
-
Објекат: Садржи објекат из модела Екцел објеката
Када креирате променљиву у макроу, декларишете променљиву . То чините тако што унесете Дим (скраћеница за димензију), затим назив ваше променљиве, а затим и тип. На пример:
Затамните мој текст као стринг
Затамни мој број као цео број
Затамните мој радни лист као радни лист
Након што креирате променљиву, можете је попунити подацима. Ево неколико једноставних примера како можете да креирате променљиву, а затим да јој доделите вредности:
Затамните мој текст као стринг
МиТект = Опсег("А1").Вредност
Затамни мој број као цео број
Мој број = Опсег("Б1").Вредност * 25
Затамните МиОбјецт као радни лист
Подесите МиВорксхеет = Схеетс("Схеет1")
Вредности које додељујете својим променљивим често потичу из података ускладиштених у вашим ћелијама. Међутим, вредности могу бити и информације које креирате. Све зависи од задатка. Овај појам ће постати јаснији док будете пролазили кроз макрое у овој књизи.
Иако је могуће креирати код који не користи променљиве, наићи ћете на многе примере ВБА кода где се користе променљиве . Два су главна разлога за то.
Прво, Екцел инхерентно не зна за шта се ваши подаци користе. Не види бројеве, симболе или слова. Види само податке. Када декларишете променљиве са одређеним типовима података, помажете Екцел-у да зна како треба да рукује одређеним деловима података тако да ће ваши макрои произвести резултате које очекујете.
Друго, варијабле помажу тако што ваш код чине ефикаснијим и лакшим за разумевање. На пример, претпоставимо да имате број у ћелији А1 на који се више пута позивате у свом макроу. Можете да преузмете тај број тако што ћете показати на ћелију А1 сваки пут када вам затреба:
Подмакро1()
Опсег("Б1").Вредност = Опсег("А1").Вредност * 5
Опсег("Ц1").Вредност = Опсег("А1").Вредност * 10
Опсег("Д1").Вредност = Опсег("А1").Вредност * 15
Енд Суб
Међутим, овај макро би приморао Екцел да троши циклусе чувајући исти број у меморији сваки пут када покажете на ћелију А1. Такође, ако треба да промените своју радну свеску тако да циљни број не буде у ћелији А1, већ у, рецимо, ћелији А2, требало би да уредите свој код променом свих референци из А1 у А2.
Бољи начин је да сачувате број у ћелији А1 само једном. На пример, можете да сачувате вредност у ћелији А1 у целобројној променљивој под називом мојаВалуе:
Суб ВитхВариабле()
Дим миВалуе Ас Интегер
миВалуе = Опсег("А1").Вредност
Опсег("Ц3").Вредност = мојаВредност * 5
Опсег("Д5").Вредност = мојаВредност * 10
Опсег("Е7").Вредност = мојаВредност * 15
Енд Суб
Овај приступ не само да побољшава ефикасност вашег кода (осигуравајући да Екцел само једном прочита број у ћелији А1), већ и осигурава да морате да уредите само један ред ако се дизајн ваше радне свеске промени.