vba variables option explicit vba
Овај водич објашњава како се декларише и користи ВБА променљиве. Такође научите о експлицитним варијаблама, опсегу променљивих, статичким и константним променљивим:
У рачунару се све вредности података чувају у меморији или рачунарском складишту. Да бисте приступили овим вредностима, потребно је да наведете име придружено тој вредности, које се у програмским језицима назива променљивом.
У овом упутству научићемо како да декларишемо и дефинишемо променљиву заједно са различитим врстама опсега променљивих, а такође ћемо детаљно истражити статичке и константне променљиве.
=> Погледајте овде да бисте видели А-З ВБА водича за обуку
Шта ћете научити:
ВБА променљиве
Променљиве су попут чувара места за вредности у рачунарском складишту. Променљиве могу садржати различите сорте вредности и те вредности се могу мењати током извршавања кода.
Свака променљива ће имати име које се користи за приступ вредности. ВБА има одређена ограничења у погледу избора имена.
Доље је наведена листа ограничења:
- Име ваше променљиве не може бити дуже од 255 знакова.
- Име променљиве не може започети бројем.
- Не можете започети с посебним знаковима као што су!, @, &,., # Или не можете имати размаке.
- Кључне речи се не сматрају именом променљиве.
Компајлер ће избацити грешку ако прекршите ова ограничења
Пример:
Важећа имена променљивих: варНаме, Ресулт12, Фирст_Нумбер
Неважећа имена променљивих: 123абц, #нумбер, Суб, абц.123
Први број (размак између речи није дозвољен)
Проглашавање ВБА променљиве
Морамо да користимо Ниједан кључна реч за декларисање променљиве. Постоје два одељка док се проглашава променљивом. 1стје име променљиве и 2ндје тип вредности која се чува у променљивој која се назива Тип података.
Синтакса: Дим ВариаблеНаме Ас ДатаТипе
Пример:
- Затамни МиАге као целобројно
- Затамни Ми_Перцентаге као двоструко
- Затамни пуно име као низ
Овде изричито кажете компајлеру да моја променљива треба да чува само ове врсте података, а ВБА ће се побринути да баци грешку неусклађености типа компајлера када вредност дефинисана за променљиву не одговара типу података.
Пример:
Sub example1() Dim Total_Marks As Integer Total_Marks = “” MsgBox Total_Marks End Sub
Али ако нисте сигурни у тип података променљиве, ВБА вам омогућава да прескочите тип података. Важећа је и доленаведена синтакса.
Дим ВариаблеНаме
Када не декларишете тип података променљиве, тада га ВБА третира као тип података Вариант и дужан је да прихвати било који тип целобројних података, као што је цео број, низ, радна свеска итд. У истом програму, варијабле варијабле такође могу прихватити вредност низа, целобројну вредност и било који други тип.
Sub VarientVariable() Dim Total_Marks Total_Marks = '' MsgBox Total_Marks Total_Marks = 544.33 MsgBox Total_Marks Total_Marks = 522 MsgBox Total_Marks End Sub
Како су Тотал_Маркс варијантна променљива, за разлику од претходног кода, преводилац неће избацити грешку као што је приказано у наставку.
Белешка: Имајте на уму да ВБА омогућава употребу променљиве без стварног пријављивања.
Пример примера испод такође даје одговарајући резултат. У овом случају, ВБА аутоматски третира променљиву као тип података Вариант. Ово се назива имплицитна декларација.
Sub VariantVariable() Total_Marks = 444 MsgBox Total_Marks End Sub
Предности проглашавања променљиве
- Лако отклањање грешака: Добра је пракса декларисати променљиву пре него што је употребите. Пружа нам раније разумевање грешака попут неусклађености типова и грешака при куцању, чиме смањује ризик одступања од логике програма.
- Боља читљивост: Као тим, биће много људи који гледају код, а проглашење променљиве помоћи ће свима са врстом вредности које се очекује од променљиве, а такође ће помоћи корисницима да унесу одговарајуће улазне вредности током извршавања програма.
- Складишни простор: Ако променљиву не декларишете, ВБА ће је третирати као тип података Вариант који заузима највећи простор у меморији (16 бајтова до 22 бајта) у поређењу са другим типовима података. На пример, ако користите променљиву типа Бите која узима само 1 бајт, а ако се не изјасните, ВБА ће на крају резервисати простор од 16 бајтова, расипајући тиме меморију.
Опција експлицитно
Да бисмо били сигурни да су све променљиве експлицитно декларисане, морамо да користимо експлицитни израз Оптион пре него што их употребимо. Требало би да се користи на почетку било које процедуре у том модулу.
Погледајмо пример који не користи експлицитну изјаву опције.
Sub example3() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Извршите код (притисните Ф5 или покрените дугме на траци са алаткама) и на крају ћете добити празно поље за поруке.
Иако сте прогласили променљиву, завршили сте у празном пољу за резултат због грешке у куцању у Мсгбок Фирт_Наме. Изрична опција ће нам помоћи у уклањању таквих грешака.
Поновимо исти код користећи Оптион Екплицит. Унесите Оптион Екплицит пре почетка поступка.
Option Explicit Sub VarientVariable() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Сада ако извршите код (притисните Ф5 или дугме Покрени на траци са алаткама) и на крају ћете добити грешку компајлера.
Можете да додате ВБА Опција експлицитно аутоматски.
У ВБ Едитор-у, Идите на Алати -> Опције -> Изаберите „Захтевај декларацију променљиве“.
Сада Опција експлицитно аутоматски ће се додати сваки пут када убаците нови модул или снимите нови макро.
Белешка: Експлицитна опција се неће додати постојећем ВБА коду. Ако је потребно, морате га додати ручно.
Додељивање вредности променљивој
Вредности се могу доделити променљивим помоћу једнаког симбола (=). Ако се позивате на ћелију у програму Екцел, тада морате да користите функције Распон.
Погледајте доњи код.
Sub varValue() Dim var1 As Integer var1 = 10 Range('C1:C14').Value = var1 MsgBox var1 End Sub
У горњем примеру, вар1 је променљива која директно чува вредност 10 помоћу (=), а функција Ранге ће помоћи да се унесе вредност вар1 која је 10 у Екцел ћелији Ц1 до Ц14.
Опсег променљиве
Свака променљива у програму имаће дефинисан опсег. Овај опсег говори програму подручја у којима је променљива видљива, тј. Модул или функција који могу или не могу користити променљиву.
ВБА има 3 врсте опсега дефинисаних за променљиву.
- Обим на нивоу поступка
- Приватни опсег на нивоу модула
- Јавни опсег на нивоу модула
Опсег на нивоу поступка
Променљиве дефинисане у процедури, тј. У под-функцији или функцији, моћи ће их користити само. Они нису видљиви ни у једном другом поступку.
Пример:
Option Explicit Sub ProcScope() Dim msg As String vartext = 'Varible is visible only inside this Sub' MsgBox vartext End Sub Sub VarNotVisible() MsgBox vartext End Sub
Када извршите горњи код, за први Суб мсгбок ће вратити одговарајући резултат, али за други Суб ће се појавити грешка компајлера. Зато што је променљива вертекса видљива само за 1стпод, а не за 2нд. Како смо користили експлицитну опцију, добит ћемо грешку компајлера за недефинисање променљивих у 2ндпод.


Приватни опсег на нивоу модула
Ове променљиве су доступне свим процедурама у дефинисаном модулу. По дефаулту, променљиве декларисане са Ниједан су обухваћени као приватни. Али препоручује се додавање приватног ради боље читљивости.
Размотримо исти пример, али променљиву ћемо прогласити изван процедуре.
Option Explicit Private vartext As String ‘ Dim vartext As String can also be used Sub PrivateScope() vartext = 'Varible is visible to all procedures' MsgBox vartext, ,”Result from Sub1” End Sub Sub VarIsVisible() MsgBox vartext, ,”Result from Sub2” End Sub
Након извршења, видећете да ће оба поступка вратити исправне резултате без грешке. Ради јасног разумевања додали смо прави наслов у мсгбок.
Јавни опсег на нивоу модула
Ове врсте променљивих су видљиве свим процедурама и свим модулима пројекта. Уметните 2 модула. (Десни клик на лист и Убаци -> модули).
Унесите доњи код у један модул.
Option Explicit Public vartext As String Sub PrivateScope() vartext = 'Varible is visible to all modules' MsgBoxvartext, , 'Result from Sub1' End Sub
Унесите доњи код у 2. модул.
Option Explicit Sub VarIsVisible() MsgBoxvartext, , 'Result from Sub2' End Sub
Резултати су приказани у наставку
Размотримо практични пример и боље разумемо сав обим.
У прилогу је референтна датотека за горњи код.
Статичка променљива
Обично се вредност променљиве чува само од позива процедуре до краја процедуре. Не чува вредност након завршетка извршења поступка.
На пример , у горњем коду, вредност фирстНо и сецондНо уклања се чим се процедура заврши, следећи пут ако извршите код, фирстНо и сецондНо добије исту вредност као што је дефинисана у коду.
Али статичке променљиве су оне које ће задржати вредност променљиве и након извршења. Статичка променљива је дозвољена само унутар подсустава или функције.
Размотрите доњи код са нестатичном променљивом.
Option Explicit Sub staticVariable() Dim count As Integer count = count + 1 Debug.Print count End Sub
Сваки пут када притиснете Ф5, добићете само 1 као резултат.
Сада прогласимо променљиву као статичку.
Option Explicit Sub staticVariable() Static count As Integer count = count + 1 Debug.Print count End Sub
Сваки пут када извршите код (Ф5) Резултат ће имати повећану вредност за бројање попут 1,2,3 итд., Јер је статичка променљива задржала своју вредност.
Белешка: Статичка променљива ће задржати вредност све док не притиснете дугме Ресетуј на траци са алаткама или затворите радну свеску.
Константна променљива
Као што и само име говори, вредност ових променљивих не може се променити током извршавања програма. Једном када је константа декларисана, не може се изменити или јој доделити нову вредност.
Декларација константе може се извршити у оквиру поступка или на нивоу модула (пре свега процедуре).
Option Explicit Sub constantVariable() Const SpeedLimitOfcar As String = '90kmph' Dim myCarSpeed As String myCarSpeed = '70kmph' If myCarSpeed > SpeedLimitOfcar Then MsgBox 'overspeed: Reduce the speed' Else MsgBox 'Within the limit: Always drive below : ' & SpeedLimitOfcar End If End Sub
Ако покушате да промените константну вредност, појавиће се грешка компајлирања.
Option Explicit Sub ChangeConstantVariable() Const SpeedLimitOfcar As Integer = 90 SpeedLimitOfcar = SpeedLimitOfcar + 10 MsgBox SpeedLimitOfcar End Sub
ФАК
П # 1) Како поставити јавну променљиву у ВБА?
Одговор: Јавне променљиве се декларишу пре почетка поступка. При декларацији променљиве мора се користити јавна кључна реч.
Јавне укупне_ознаке као целобројне
П # 2) Који тип променљивих се не може декларисати ван процедуре?
Одговор: Статичке променљиве не могу се декларисати ван процедуре у ВБА и добићете грешку при компајлирању.
П # 3) Како прогласити променљиву у ВБА?
Одговор: Кључна реч Дим се користи за декларисање променљиве. Дим представља Димензија.
Дим променљиво име као тип података
П # 4) Како доделити променљиву вредност ћелији у ВБА?
Одговор: Можете користити функцију опсега.
вар1 = 10
Опсег („Ц1: Ц14“). Вредност = вар1
П # 5) Шта су променљиве у ВБА?
Одговор: Променљиве су попут чувара места за вредности у рачунарском складишту. Променљиве могу садржати различите сорте вредности и те вредности се могу мењати током извршавања кода. Свака променљива треба да има име, користећи име променљиве, рачунар ће преузети вредност додељену за ту променљиву.
П # 6) Да ли морате да пријавите променљиву у ВБА?
Одговор: Изјава је необавезна у ВБА. Ако променљиву не декларишете и не користите директно у процедури, она се назива Имплицитна декларација. Да би се избегле грешке у коду и ради боље читљивости, препоручује се експлицитна декларација променљиве.
П # 7) Како да пријавим више променљивих у ВБА?
Одговор: У једној изјави декларације можете пријавити више променљивих. Потребно је само да одредите име променљиве одвојено зарезима у једној клаузули Ас.
како отворити јсон датотеку на Виндовсима
Затамни ФирстНо, СецондНо као Интегер
Такође можете одредити различите променљиве у једној изјави декларације. Свака променљива ће узети тип података наведен у клаузули Ас након свог дела имена променљиве.
Дим а, б као појединачно, ц, д као двоструко, е као целобројно, ф као низ
П # 8) Када у ВБА не би постојала разлика између пригушеног и приватног?
Одговор: Ако проглашавате приватни опсег на нивоу модула, онда нема разлике између декларисања променљиве као пригушене или приватне. Подразумевано, променљиве декларисане са Ниједан су обухваћени као приватни. Али препоручује се додавање приватног ради боље читљивости.
П # 9) Шта је променљива на нивоу модула?
Одговор: Променљиве на нивоу модула могу бити приватне или јавне. Приватне променљиве су доступне за све процедуре у том модулу и нису видљиве ниједном другом модулу. Јавне променљиве су видљиве свим процедурама у свим модулима у пројекту.
Закључак
Варијабла је пресудна у било ком програмском језику. У овом упутству видели смо шта су променљиве, како их декларисати и користити у програму. Такође смо истражили методу Оптион Екплицит, која форсира примену експлицитне декларације.
Разговарано је о различитим типовима променљивог опсега који помажу корисницима да одреде који делови кода променљива могу да се користе. Научили смо употребу статичких променљивих која помаже да се одржи вредност променљиве и константне променљиве које помажу да вредност променљиве остане непромењена.
=> Посетите овде да бисте научили ВБА од нуле
Препоручено читање
- Водич за Екцел ВБА - Увод у ВБА у програму Екцел
- Екцел ВБА низ и методе низа са примерима
- ВБА типови података - нумерички и не-нумерички типови података у ВБА
- Питхон променљиве
- Променљиве у Ц ++
- Јава променљиве и њихови типови са примерима
- Врсте података и променљиве Ц # са примерима
- ВБСцрипт променљиве: Како пријавити и користити променљиве - ВБСцрипт Дим