Във всички езици за програмиране имаме променливи спецификатори за достъп, които определят от къде може да се получи достъп до определена променлива. Excel VBA не е изключение. VBA също има спецификатори на обхвата. Тези спецификатори на обхвата могат да се използват за задаване на видимост/обхват на променлива в Excel VBA.
В Excel VBA имаме три типа спецификатори на обхвата:
- Процедурно ниво
- Частно - ниво на модул
- Обществено - ниво на проекта
Променлив обхват на ниво VBA процедура
Променливите, които са декларирани в рамките на подпрограма, могат да бъдат достъпни само в тази процедура/функция. Те имат обхват на ниво процедура. Обикновено се декларират с ключова дума Dim. Ако модулът е опция имплицитна, тогава променливата може да не е декларирана, а просто използвана директно.
В примера по -долу имаме тест за обхват на подпрограма, който има променливи x и y. Когато изпълняваме първата подпрограма, тя работи перфектно и отпечатва сумата от X и Y
Опция Explicit Sub scopeTest () Dim x, y като цяло число „Променлива на ниво процедура във VBA x = 2 y = 3 Debug.Print x + y End Sub Sub sum () x = 5 y = 7 Debug.Print x + y End Sub
Но когато стартирате сумата на подпрограмата, тя издава грешка, че променливата не е декларирана. Защо? Тъй като X и Y са частни за обхвата на процедуратаTest и подпрограмата нямат достъп до тях. Следователно подводницата се сблъсква с грешка.
Частна променлива VBA- Обхват на ниво модул
Когато искате да декларирате променлива, която трябва да бъде достъпна в целия модул, тогава декларирате тази променлива като частна в горната част на модула, преди всяка подпрограма или функция.
Променливите, декларирани преди всяка подпрограма, в модула, по подразбиране са частни. Дори и да ги декларирате с ключова дума Dim. Но за да бъдем конкретни, разумно е да използвате ключовата дума Private.
Двете процедури по -долу са в един и същ модул, модул 1.
Опция Изрично „Променлива на ниво модул във VBA. И двете променливи x и y са частни за този модул. и „могат да бъдат достъпни от всяка под -функция или функция в този модул. Dim x As Integer Private y As Integer Sub scopeTest () 'Това може да бъде достъпно от всеки модул в проекта x = 2 y = 3 Debug.Print x + y End Sub Частна допълнителна сума () „Това не може да бъде достъпно от други модули x = 5 y = 7 Debug.Print x + y End Sub
Горните две функции ще работят перфектно, тъй като променливите x и y са частните променливи на този модул.
Важно: Последните стойности, съхранени в x и y, се запазват, докато в целия модул. Ако първо стартираме sub scopeTest и не инициализираме стойностите на x и y в подсумма и го изпълним, тогава първоначалната стойност на x и y ще бъде непроменена.
Подпрограмата по -долу е дефинирана в отделен модул, модул 2. Когато се опитвам да осъществя достъп до променливата от друг модул, процедурата (или функцията) на VBA се сблъсква с грешка.
Но ако се опитам да извикам подпрограмата сума от модул 1 в модул 2, това работи перфектно. За да направите вашата функция и подпрограми частни за модула, използвайте ключовата дума Private преди под -функцията.
Забележка:- Променливите, декларирани преди всяка подпрограма или функция в модул, са частни за модула по подразбиране. Можете да използвате Частниключова дума. Но функциите и подпрограмите са публични по подразбиране и могат да бъдат достъпни от всеки модул в проект. За да направите функциите и подпрограмите частни за модула, трябва да използвате ключовата дума Private.
Публични променливи- обхват на ниво проект
Както научихме в горните примери, функцията и подпрограмите са по подразбиране публични и могат да бъдат достъпни от всеки модул, но променливите не са. За да направите променлива достъпна от всеки модул в Excel VBA,използваме публична ключова дума.
За да декларирате публична променлива в проект, вие сте ги декларирали в горната част на модула, преди която и да е функция или подпрограма с публичната ключова дума. Кодът по -долу е записан в модул 1.
Опция Изрично „Променлива на ниво проект във VBA. Публично x като цяло число публично y като цяло число Public Sub scopeTest () 'Това може да бъде достъпно от всеки модул в проекта x = 2 y = 3 End Sub Private Sub sum ()' Това не е достъпно от други модули x = 5 y = 7 Debug.Print x + y End Sub
И тази подпрограма е в друг модул, модул 2.
Опция Explicit Sub mul () Call scopeTest 'Call sum' няма да работи, тъй като е частна за модула 1 Debug.Print x * y End Sub
Този път работи перфектно.
Първо извиках подпрограмата scopeTest. Тъй като scopeTest е публичен, той се извиква. Той инициализира стойностите на x и y. След това умножаваме x и y. Тъй като подпрограмата scopeTest я беше инициализирала със стойности 2 и 3, резултатът, който получаваме, е 6.
Така че да, момчета, ето как можете да използвате спецификаторите на променливия обхват в Excel, за да контролирате видимостта на променливите, функциите и подпрограмите в Excel VBA проекти.
Опитах се да обясня спецификаторите за достъп на VBA по възможно най -простия начин. Надявам се, че беше обяснително. Ако имате някакви съмнения относно тази статия или друго съмнение, свързано с VBA, попитайте ме в секцията за коментари по -долу. Ще се радвам тук от вас.
Аргументи ByRef и ByVal | Когато аргумент се предава като аргумент ByRef на различна под -функция или функция, се изпраща препратката към действителната променлива. Всички промени, направени в копието на променливата, ще бъдат отразени в първоначалния аргумент.
Изтриване на листове без подкани за потвърждение с помощта на VBA в Microsoft Excel | Тъй като изтривате листове с помощта на VBA, знаете какво правите. Бихте искали да кажете на Excel да не показва това предупреждение и да изтрие проклетия лист.
Добавяне и запазване на нова работна книга с помощта на VBA в Microsoft Excel 2016 | В този код първо създадохме препратка към обект на работна книга. И тогава го инициализирахме с нов обект на работна книга. Ползата от този подход е, че можете лесно да извършвате операции с тази нова работна книга. Като запазване, затваряне, изтриване и т.н.
Показване на съобщение в лентата на състоянието на Excel VBA Лентата на състоянието в Excel може да се използва като монитор на кодове. Когато вашият VBA код е дълъг и изпълнявате няколко задачи с помощта на VBA, често деактивирате актуализацията на екрана, така че да не виждате този екран да трепти
Изключете предупредителните съобщения с помощта на VBA в Microsoft Excel 2016 | Този код не само деактивира сигналите за VBA, но също така увеличава ефективността на кода във времето. Да видим как.
Популярни статии:
50 преки пътища в Excel за повишаване на вашата производителност | Бъдете по -бързи в задачата си. Тези 50 преки пътища ще ви накарат да работите още по -бързо в Excel.
Функцията VLOOKUP в Excel | Това е една от най -използваните и популярни функции на excel, която се използва за търсене на стойност от различни диапазони и листове.
COUNTIF в Excel 2016 | Пребройте стойностите с условия, използвайки тази невероятна функция. Не е необходимо да филтрирате данните си, за да преброите конкретна стойност. Функцията Countif е от съществено значение за подготовката на вашето табло.
Как да използвате функцията SUMIF в Excel | Това е друга основна функция на таблото. Това ви помага да обобщите стойностите при конкретни условия.