End Sub. Переменные уровня процедуры

Переменные уровня процедуры

Область видимости переменных

Область видимости переменных, констант, подпрограмм и функций

Любая переменная, константа, подпрограмма или функция VBA обладает областью видимости (scope), в которой возможен доступ к данной переменной, константе, подпрограмме или функции. Допустим, что мы определили переменную Var1 в процедуре Proc1, а затем написали вторую процедуру – Proc2, где также хотим использовать эту переменную. Если Var1 описана внутри Proc1 ключевым словом Dim, она считается переменной «уровня процедуры». Это означает, что область её видимости ограничена подпрограммой или функцией, в которой она объявлена. Использовать Var1 в Proc2 без расширения видимости переменной нельзя.

Рассмотрим другой пример. В модуле Модуль1 содержится функция Функция1. Мы хотим вызвать её из программы, помещенный в другой модуль, например Модуль2. Если Функция1 описана с помощью ключевого слова Function (см. раздел «Функции»), она считается функцией «уровня проекта». То есть она доступна везде в пределах содержащей её рабочей книги – мы вправе вызывать её из любой программы любого модуля книги. Чтобы предотвратить вызов функции из программ других модулей, достаточно ограничить область её видимости.

А теперь рассмотрим вопросы видимости отдельно для всех, уже описанных нами, основных элементов VBA – переменных, констант, подпрограмм и функций.

Хотя обычно термин «область видимости» применяют, говоря о доступе к переменной из различных фрагментов приложения VBA, он также имеет отношение к «времени жизни» переменной, то есть к промежутку времени, в течение которого переменная сохраняет присвоенное ей значение. В VBA переменные имеют три уровня видимости:

§ процедуры;

§ модуля;

§ проекта (или общий уровень).

Эти уровни в равной степени относятся и к одиночным переменным, и к массивам. Помните также, что по умолчанию определения пользовательских типов, помещенные в разделе описания модуля VBA, имеют область видимости на уровне проекта. Это означает, что после определения пользовательского типа Вы можете объявлять переменные этого типа в любой программе проекта.

Переменная доступна на уровне процедуры, если она объявлена внутри процедуры ключевым словом Dim. Например, в ПеременныеУровняПроцедуры у переменной Var1 область видимости – на уровне процедуры.

Sub ПеременныеУровняПроцедуры()

Dim Var1 As Integer

Var1 =55

MsgBox Var1

Любая попытка использовать переменную Var1 вне этой процедуры приведет к ошибке. Попробуем вставить в тот же модуль другую программу и попытаемся обратиться в ней к переменной Var1. Давайте вставим перед последней строкой ПеременныеУровняПроцедуры вызов этой второй программы:

Sub ПеременныеУровняПроцедуры ()

Dim Var1 As Integer

Var1 =55

MsgBox Var1

DisplayMessage


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: