Лекция № 21. Создание и использование процедур

К настоящему времени Вы заработали баллов: 0 из 0 возможных.

Страница 8. Область действия переменной

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

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

 

Пример 8. Область действия процедурного уровня

Sub HelloWorld()
Dim HelloMsg 'сохраняет текст для MsgBox
HelloMsg = "HelloWorld!"
MsgBox HelloMsg, , "Окно приветствия"
End Sub

Sub HelloDave()
Dim HelloMsg 'сохраняет текст для MsgBox
HelloMsg = "Hello, Dave!"
MsgBox HelloMsg, , "Другое окно сообщения"
End Sub

 

2. Модульный уровень. Переменные уровня модуля используются только в модуле, в котором они описаны при помощи инструкции Dim, размещенной в области описания модуля, т. е. перед описанием процедур. Это необходимо когда несколько процедур должны иметь доступ к одной и той же переменной. Обычно эффективнее вычислить один раз какое-либо значение, сохранить его в переменной, а затем использовать эту переменную в не­скольких процедурах, чем вычислять одно и то же значение снова и снова.

 

Пример 9. Область действия переменной модульного уровня

Dim HelloMsg ' переменная модульного уровня

Sub HelloWorld()
HelloMsg = "Hello, World!"
MsgBox HelloMsg, , "Окно приветствия"
End Sub

Sub HelloDave()
HelloMsg = "Hello, Dave!"
MsgBox HelloMsg, , "Другое окно сообщения"
End Sub

Имя переменной должно быть уникальным в ее области действия – нельзя объявлять две переменные модульного уровня с одним именем в одном и том же модуле.

 

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

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

 

Пример 10. Комбинированная модульная и процедурная область действия

Dim HelloMsg 'переменная уровня модуля

Sub HelloWorld()
HelloMsg = "Hello, World!"
MsgBox HelloMsg, , "Greeting Box"
End Sub

Sub HelloDave()
HelloMsg = "Hello, Dave!"
MsgBox HelloMsg, , "Другое окно сообщения"
End Sub

Sub AnotherMessage()
Dim HelloMsg 'переменная уровня процедуры
HelloMsg = "Еще одно окно сообщения"
MsgBox HelloMsg, , "Еще одно окно сообщения"
End Sub

В примере 10 приведены три различные процедуры. В первых двух процедурах используется переменная HelloMsg модульного уровня. Однако в третьей процедуре AnotherMessage имеется свое объявление переменной HelloMsg. При команд этой процедуры VBA использует наиболее локальную переменную – HelloMsg, объявленную как переменную процедурного уровня.

Переменная модульного уровня HelloMsg недоступна для процедуры AnotherMessage.

 

Вы прошли 69% лекции
69%