logo
Информатика учебник

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

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

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

Область действия каждой переменной зависит от двух взаимосвязанных факторов:

  1. места объявления этой переменной и

  2. указанных при ее объявлении ключевых слов.

Для областей действия переменных можно выделить т р и уровня.

  1. П е р е м е н н а я, объявленная в п р о ц е д у р е, является доступной т о л ь к о в э т о й п р о ц е д у р е.

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

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

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

  1. П е р е м е н н а я, объявленная в разделе объявления модуля с п о м о щ ь ю к л ю ч е в о г о с л о в а Риblic, является доступной для в с е х м о д у л е й во в с е х проектах.

При наличии в разделе объявлений модуля оператора Option Private Module переменные, объявленные с использованием ключевого слова Public, будут доступны всем модулям только данного проекта.

Всё это трудно понять до тех пор, пока не будет рассмотрен какой-нибудь конкретный пример, в котором бы встречались все 3 варианта области действия переменных.

Рассмотрим следующий абстрактный (не "привязанный" к конкретной задаче) пример (см. рис.10.1).

Здесь переменные а и b доступны в пределах всего модуля, в состав которого входит приведенный выше фрагмент. Переменная с будет доступна для всех модулей, но только данного проекта (поскольку указан оператор Option Private Module).

Переменная х будет доступна только внутри самой процедуры NewSub, поскольку она объявлена непосредственно в ней.

Option Private Module

Dim a As Integer

Private b As Long

Public с As Single

. . . . . . .

Public Sub

NewSub()

Dim x As Single

. . . . . . . .

End Sub

Рис. 10.1. Способы объявления переменных в VBA-программе