vba variables option explicit vba
Този урок обяснява как да декларирате и използвате VBA променливи. Също така научете за изричните опции, обхвата на променливите, статичните и постоянните променливи:
В компютър всички стойности на данните се съхраняват в памет или компютърна памет. За достъп до тези стойности трябва да посочите име, свързано с тази стойност, което се нарича променлива в програмните езици.
В този урок ще научим как да декларираме и дефинираме променлива, заедно с различните видове обхват на променливи, както и да изследваме подробно статичните и постоянните променливи.
=> Проверете тук, за да видите A-Z на уроци за обучение на VBA
Какво ще научите:
- VBA променливи
- Заключение
VBA променливи
Променливи са като заместители за стойностите в компютърното хранилище. Променливите могат да съдържат различни разновидности на стойности и тези стойности могат да се променят по време на изпълнението на кода.
Всяка променлива ще има име, което се използва за достъп до стойността. VBA има определени ограничения по отношение на избора на име.
По-долу е включен списъкът с ограничения:
- Името на вашата променлива не може да бъде повече от 255 знака.
- Името на променлива не може да започва с число.
- Не можете да започнете със специални знаци като!, @, &,., # Или не можете да имате интервали.
- Ключовите думи не се разглеждат като име на променлива.
Компилаторът ще изведе грешка, ако нарушите тези ограничения
Пример:
Валидни имена на променливи: varName, Result12, First_Number
Невалидни имена на променливи: 123abc, #number, Sub, abc.123
Първо число (интервалът не е разрешен между думите)
Деклариране на променлива на VBA
Трябва да използваме Нито един ключова дума за деклариране на променлива. Има 2 раздела, докато декларирате променлива. 1уле името на променливата и 2ndе типът стойност, която се съхранява в променливата, която се нарича Тип данни.
Синтаксис: Dim VariableName As DataType
Пример:
- Затъмнете MyAge като цяло число
- Затъмнете My_Percentage като двойно
- Затъмнете пълното име като низ
Тук изрично казвате на компилатора, че моята променлива трябва да съхранява само тези типове данни и VBA ще се погрижи да изхвърли грешка при несъответствие на типа на компилатора, когато дефинирана за променливата стойност не съответства на типа данни.
Пример:
Sub example1() Dim Total_Marks As Integer Total_Marks = “” MsgBox Total_Marks End Sub
Но ако не сте сигурни в типа данни на променливата, тогава VBA ви позволява да пропуснете типа данни. Посоченият по-долу синтаксис също е валиден.
Dim VariableName
Когато не декларирате типа данни на променливата, тогава VBA я третира като тип данни Variant и тя е длъжна да приеме всякакъв тип данни като цяло число, низ, работна книга и т.н. В същата програма, вариантните променливи могат да приемат и низова стойност, целочислена стойност и всякакъв друг тип.
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
Тъй като Total_Marks е вариантна променлива, за разлика от предишния код, компилаторът няма да изведе грешка, както е показано по-долу.
Забележка: Не забравяйте, че VBA ви позволява да използвате променлива, без действително да я декларирате.
Примерният код по-долу също дава подходящ резултат. В този случай VBA автоматично третира променливата като тип данни Variant. Това се нарича неявна декларация.
Sub VariantVariable() Total_Marks = 444 MsgBox Total_Marks End Sub
Предимства на обявяването на променлива
- Лесно за отстраняване на грешки: Добра практика е да декларирате променлива, преди да я използвате. Това ни дава по-ранно разбиране за грешките като несъответствие на типа и грешки при печатна грешка, като по този начин намалява риска от отклонение от логиката на програмата.
- По-добра четливост: Като екип ще има много хора, които разглеждат кода и декларирането на променлива ще помогне на всички с типа стойности, които се очаква да вземе променливата, а също така ще помогне на потребителите да въведат подходящи входни стойности, докато изпълняват програмата.
- Място за съхранение: Ако не декларирате променлива, тогава VBA я третира като тип данни Variant, който заема най-голямото пространство в паметта (16 байта до 22 байта) в сравнение с други типове данни. Например, ако използвате променлива от тип Byte, която отнема само 1 байт и ако не декларирате, VBA в крайна сметка ще запази пространство от 16 байта, като по този начин ще загуби паметта.
Опция Изрично
За да сме сигурни, че всички променливи са изрично декларирани, трябва да използваме израза Option Explicit, преди да ги използваме. Трябва да се използва в началото на всяка процедура в този модул.
Нека да видим пример, който не използва изрично изявление на опцията.
Sub example3() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Изпълнете кода (натиснете F5 или бутона за изпълнение в лентата с инструменти) и в крайна сметка ще получите празно поле за съобщения.
Въпреки че сте декларирали променливата, сте се озовали в празно поле за резултат поради печата в Msgbox Firt_Name. Опцията Explicit ще ни помогне при отстраняването на такива грешки.
Нека преработим същия код, използвайки Option Explicit. Въведете опция Изрично, преди процедурата да започне.
Option Explicit Sub VarientVariable() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Сега, ако изпълните кода (натиснете F5 или бутона Run в лентата с инструменти) и в крайна сметка ще получите грешка в компилатора.
Можете да накарате VBA да се добави Опция Изрично автоматично.
В редактора на VB, Отидете на Инструменти -> Опции -> Изберете „Изискване на декларация на променлива“.
Сега Опция Изрично ще се добавя автоматично всеки път, когато вмъквате нов модул или записвате нов макрос.
Забележка: Изрична опция няма да бъде добавена към съществуващия код на VBA. Трябва да го добавите ръчно, ако е необходимо.
Присвояване на стойност на променлива
Стойностите могат да се присвояват на променливи, като се използва равен на символ (=). Ако се позовавате на клетка в Excel, тогава трябва да използвате функциите Range.
Вижте кода по-долу.
Sub varValue() Dim var1 As Integer var1 = 10 Range('C1:C14').Value = var1 MsgBox var1 End Sub
В горния пример var1 е променлива, която съхранява стойността 10 директно, като използва (=), а функцията Range ще помогне да се въведе стойност на var1, която е 10 в клетката на Excel от C1 до C14.
Обхват на променлива
Всяка променлива в дадена програма ще има определен обхват. Този обхват казва на програмата областите, в които променливата е видима, т.е.модулът или функцията, които могат или не могат да използват променливата.
VBA има 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
Когато изпълните горния код, за първия Sub msgbox ще върне правилен резултат, но за втория Sub ще бъде изведена грешка на компилатора. Тъй като променливата на върха е видима само за 1улпод, а не за 2nd. Тъй като използвахме явна опция, ще получим грешка на компилатора, за да не дефинираме променливи в 2ndпод.
Частен обхват на ниво модул
Тези променливи са достъпни за всички процедури в дефинирания модул. По подразбиране променливите, декларирани с Нито един са обхванати като частни. Но се препоръчва да добавите private за по-добра четливост.
Нека разгледаме същия пример, но ще декларираме променливата извън процедурата.
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
След изпълнението ще видите, че и двете процедури ще върнат правилните резултати без грешка. За ясно разбиране добавихме правилното заглавие в msgbox.
Обществен обхват на ниво модул
Този тип променливи са видими за всички процедури и във всички модули на даден проект. Поставете 2 модула. (Щракнете с десния бутон върху лист и Вмъкване -> модули).
Въведете кода по-долу в един модул.
Option Explicit Public vartext As String Sub PrivateScope() vartext = 'Varible is visible to all modules' MsgBoxvartext, , 'Result from Sub1' End Sub
Въведете кода по-долу във втория модул.
Option Explicit Sub VarIsVisible() MsgBoxvartext, , 'Result from Sub2' End Sub
Резултатите са показани по-долу
Нека разгледаме практически пример и да разберем по-добре целия обхват.
Приложен е референтният файл за горния код.
Статична променлива
Обикновено стойността на променливата се запазва само от извикването на процедурата до края на процедурата. Той не запазва стойността, след като изпълнението на процедурата приключи.
Например , в горния код, стойността на firstNo и secondNo се премахва веднага след като процедурата приключи, следващия път, ако изпълните кода, firstNo и secondNo получава същата стойност, както е дефинирана в кода.
Но статичните променливи са тези, които ще запазят стойността на променливата дори след изпълнението. Статичната променлива е разрешена само вътре в подфункция или функция.
Помислете за кода по-долу с нестатична променлива.
Option Explicit Sub staticVariable() Dim count As Integer count = count + 1 Debug.Print count End Sub
Всеки път, когато натиснете F5, ще получите само 1 като резултат.
Сега нека декларираме променливата като статична.
Option Explicit Sub staticVariable() Static count As Integer count = count + 1 Debug.Print count End Sub
Всеки път, когато изпълнявате кода (F5) Резултатът ще има увеличена стойност за брой като 1,2,3 и т.н., тъй като статичната променлива е запазила стойността си.
Забележка: Статичната променлива ще запази стойността, докато не натиснете бутона Reset в лентата с инструменти или затворите работната книга.
Постоянна променлива
Както показва името, стойността на тези променливи не може да се променя по време на изпълнението на програмата. След като константата бъде декларирана, тя не може да бъде модифицирана или присвоена нова стойност.
Деклариране на константа може да се направи в рамките на процедура или на ниво модул (преди всички процедури).
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) Как да зададете публична променлива във VBA?
Отговор: Публичните променливи се декларират преди началото на процедура. Публичната ключова дума трябва да се използва, докато се декларира променлива.
Публични общо_Означения като цяло
В # 2) Какъв тип променливи не могат да бъдат декларирани извън процедурата?
Отговор: Статичните променливи не могат да бъдат декларирани извън процедурата във VBA и ще получите грешка при компилиране.
В # 3) Как да декларирам променлива във VBA?
Отговор: Ключовата дума Dim се използва за деклариране на променлива. Dim означава Dimension.
Име на променлива като тип данни
В # 4) Как да присвоите променлива стойност на клетка в VBA?
Отговор: Можете да използвате функцията Range.
var1 = 10
Обхват („C1: C14“). Стойност = var1
В # 5) Какви са променливите във VBA?
Отговор: Променливите са като заместители за стойностите в компютърното хранилище. Променливите могат да съдържат различни разновидности на стойности и тези стойности могат да се променят по време на изпълнението на кода. Всяка променлива трябва да има име, използвайки името на променливата, компютърът ще извлече стойността, присвоена за тази променлива.
В # 6) Трябва ли да декларирате променлива във VBA?
Отговор: Декларацията не е задължителна във VBA. Ако не декларирате променлива и не я използвате директно в процедурата, тогава тя се нарича имплицитна декларация. За да се избегнат грешки в кода и за по-добра четливост, се препоръчва да декларирате променлива изрично.
В # 7) Как да декларирам множество променливи във VBA?
Отговор: Можете да декларирате множество променливи в един декларация. Трябва само да посочите името на променливата, разделено със запетаи в една клауза As.
qa мениджър интервю въпроси отговори pdf
Dim FirstNo, SecondNo As Integer
Можете също да посочите различни променливи в един декларация. Всяка променлива ще вземе типа данни, посочен в клаузата As, след нейната част с името на променливата.
Dim a, b As Single, c, d As Double, e As Integer, f As String
В # 8) Кога няма да има разлика между неясното и частното във VBA?
Отговор: Ако декларирате частен обхват на ниво модул, тогава няма разлика между декларирането на променлива като неясна или частна. По подразбиране променливите, декларирани с Нито един са обхванати като частни. Но се препоръчва да добавите private за по-добра четливост.
В # 9) Какво е променлива на ниво модул?
Отговор: Променливите на ниво модул могат да бъдат частни или публични. Частните променливи са достъпни за всички процедури в този модул и не се виждат от друг модул. Публичните променливи са видими за всички процедури във всички модули в даден проект.
Заключение
Променливата е от решаващо значение за всеки език за програмиране. В този урок видяхме какво представляват променливите, как да ги декларираме и използваме в програмата. Също така изследвахме метода Option Explicit, който налага изпълнението на изричната декларация.
Обсъдени бяха различни видове обхват на променливите, които помагат на потребителите да определят кои части от кода може да се използва променливата. Научихме използването на статични променливи, което помага да се запази стойността на променливата и постоянните променливи, които помагат да се запази стойността на променливата непроменена.
=> Посетете тук, за да научите VBA от нулата
Препоръчително четене
- Урок за Excel VBA - Въведение в VBA в Excel
- Excel VBA Array и Array методи с примери
- Типове данни на VBA - Числови и нецифрени типове данни във VBA
- Променливи на Python
- Променливи в C ++
- Java променливи и техните типове с примери
- Типове данни и променливи C # с примери
- VBScript променливи: Как да декларирам и използвам променливи - VBScript Dim