End Function
End Sub
Область видимости подпрограмм и функций
End Sub
End If
End Sub
Сохраняемые переменные
Вы уже знаете, что при объявлении переменных используются ключевые слова Dim и Public. Для описания же переменных на уровне процедуры применяется еще одно ключевое слово — Static. Переменная, объявленная знакомым нам способом, с помощью инструкции Dim, прекращает свое существование после завершения программы, в которой она была описана, то есть после слов End Sub или End Function. Определив переменную как Static (сохраняемую), мы продлим время ее жизни до завершения работы всех программ, включая и ту, в которой переменная была описана.
Sub СтатическаяПеременная()
СтатическаяНестатическая
СтатическаяНестатическая
Sub СтатическаяНестатическая()
Static Var1 As String
Dim Var2 As String
If Varl = "" Then
Var1 = "Var1: Статическая переменная"
Var2 = "Var2: Нестатическая переменная "
MsgBox Varl
MsgBox Var2
В программе СтатическаяПеременная дважды вызывается программа СтатическаяНестатическая. При первом вызове определяется сохраняемая переменная Varl и обычная переменная Var2. Затем в инструкции If переменная Varl сравнивается с пустой строкой. Результат положительный, поскольку пока этой переменной значение не присвоено. В инструкции If переменным Varl и Var2 присваиваются строковые значения, которые перед завершением работы СтатическаяНестатическая отображаются в информационных окнах. Затем управление возвращается в СтатическаяПеременная, и СтатическаяНестатическая вызывается второй раз. Переменная Varl, объявленная как Static, сохранила свое значение, поэтому второе сравнение приводит к отрицательному результату. Повторное присвоение значений Varl и Var2 не происходит. Когда переменная Varl выводится на экран, в окне отображено ее прежнее значение. Переменная же Var2 при повторном вызове СтатическаяНестатическая была создана заново, поэтому в ее окне мы увидим пустую строку.
У подпрограмм и функций только два уровня видимости — модуля и проекта. По умолчанию все программы доступны на уровне проекта, то есть их можно вызывать из любого модуля проекта. При желании Вы можете объявлять такие программы с ключевым словом Public:
Public Sub ПрограммаУровняПроекта()
Dim Var1 As Integer
Var1 = 1
MsgBox AddOne(Varl)
Public Function AddOne(ByRef Var1)
AddOne = Var1 + 1
Поскольку все программы по умолчанию доступны на уровне проекта, слово Public используется в основном для того, чтобы яснее отделить их от программ уровня модуля. Если Вы опустите слово Public, никаких изменений не произойдет.
Чтобы перевести подпрограмму или функцию на уровень модуля, объявите ее с ключевым словом Private. Помните, что такие программы не могут запускаться сами по себе. Их можно только вызывать из других программ. Это иллюстрируется следующим примером.
Sub ВызовПрограммыУровняМодуля()
Var1 = GetRand
ПрограммаУровняМодуля Var1