Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика учебник.doc
Скачиваний:
89
Добавлен:
04.11.2018
Размер:
3.46 Mб
Скачать

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-программе

10.5. Присвоение значения переменной

Когда переменная объявлена, можно поместить в эту переменную какую-то информацию, т.е., присвоить ей значение. Это присвоенное значение будет храниться в переменной до тех пор, пока ей не будет присвоено другое значение.

Значение переменной присваивается специальным оператором, называемым оператором присваивания, в котором имя переменной (слева) соединяется с присваиваемым ей значением (справа) с помощью знака равенства. Например, в операторе присваивания х = 5 переменной х присваивается значение 5.

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

Summa = CenaZaOdinKg * Wes

Здесь переменной Summa присваивается значение, равное произведению значений переменных CenaZaOdinKg и Wes. Отсюда следует, что в языке VBA оператор присваивания представляет собой конструкцию, в которой знак равенства (=) связывает переменную, имя которой указано слева от него, с выражением, определяющим новое значение этой переменной и указанным справа от знака равенства.

При выполнении оператора присваивания языка VBA сначала вычисляется выражение, стоящее справа от знака равенства, а затем полученный результат сохраняется в переменной, имя которой указано слева от знака равенства.