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

Термины время жизни и область видимости переменной означают место использования переменной в приложении, а также время существования переменной после ее создания.

Область видимости переменной определяет часть кода, которая «знает» о существовании переменной.

В VBA могут применяться глобальные и локальные переменные. Глобальные переменные доступны из любой части программы. Для локальных переменных можно задавать область видимости в рамках всего модуля или отдельной процедуры.

Область определения переменной задает область, в которой может быть использована переменная. В VBA имеется три соответствующих уровня переменных:

· Переменные уровня процедуры распознаются только в процедуре, в которой они описаны при помощи инструкций Dim, Static. Эти переменные являются локальными.

Public Sub HelloWorld()

Dim HelloMsg

HelloMsg = "HelloWorld"

MsgBox HelloMsg

End Sub

Public Sub HelloDave()

Dim HelloMsg

HelloMsg = "HelloDave"

MsgBox HelloMsg

End Sub

· Переменные уровня модуля используются только в модуле, в котором они описаны, но не в других модулях данного проекта. Описываются при помощи инструкции Dim или Private, размещенной в области описания модуля, т. е. перед описанием процедур.

Dim HelloMsg

Public Sub HelloWorld()

HelloMsg = "HelloWorld"

MsgBox HelloMsg

End Sub

Public Sub HelloDave()

HelloMsg = "HelloDave"

MsgBox HelloMsg

End Sub

· Общие переменные, используемые во всех модулях данного проекта, описываются при помощи инструкции Public, размещенной в области описания модуля.

Однако можно иметь переменные с одним и тем же именем на разных уровнях области действия. Когда переменные имеют одно имя, но разные области действия, VBA использует переменную с наиболее локальной областью действия.

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

Переменные, процедурного уровня создаются каждый раз, когда процедура начинает выполняться, и уничтожаются, когда процедура перестает выполняться.

Константы

Константы – это данные, которые не изменяют свое значение во время выполнения программы.

Синтаксис объявления констант

[Public | Private] Const < Имя константы > [As Тип] = < Выражение >

Аргументы:

       
  Public Ключевое слово, используемое на уровне модуля для описания констант, доступных всем процедурам во всех модулях. Не допускается в процедурах.  
  Private Ключевое слово, используемое на уровне модуля для описания констант, доступных только внутри модуля, в котором выполняется описание. Не допускается в процедурах.  
  ИмяКонстанты Имя константы, удовлетворяющее стандартным правилам именования переменных  
  Тип Один из поддерживаемых типов данных: Byte, Boolean, Integer, Long, Currency, Single, Double. Decimal (в настоящее время не поддерживается), Date, string или variant. Для каждой описываемой константы следует использовать отдельное предложение AS тип  
  Выражение Литерал, другая константа или любое сочетание, которое включает все арифметические или логические операторы, за исключением is  

Пример:

Const ПроцентнаяСтавка As Single = 0.2

Const Фирма = "OOO Бескрайние просторы"

Область действия констант определяется, так же как и в случае с переменными. Т.е. константа, объявленная в процедуре, имеет область действия процедурного уровня. Если константа объявлена в области модуля, то область действия данной константы модульного уровня.

Если константа объявлена

Const < Имя константы > = < Выражение >,

то константа имеет тип, согласующийся с типом выражения.

Например:

Const b=”Весна” ‘ b типа string

Массивы

Массив представляет собой набор переменных одного типа с одним именем и разными индексами. Каждая такая переменная называется элементом массива. Количество хранящихся в массиве элементов называется размером массива.

Обращение к элементу массива осуществляется указанием имени массива, за которым в круглых скобках указывается индекс массива.

Например,

Dim B(l To 2, 1 То 2) As Single

B(1,1)=2

В(1,2)=4

В(2,1)=1

В(1,2)=6

Наши рекомендации