Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Статические переменные и подпрограммы
Переменные, указанные в параметрах, а также переменные, объявленные внутри подпрограммы, являются локальными переменными. Эти переменные создаются при вызове подпрограммы, а после выхода из подпрограммы они удаляется. Таким образом, локальная переменная видна только внутри подпрограммы. Если название локальной переменной совпадает с названием глобальной переменной, то все операции будут производиться с локальной переменной, а значение глобальной не изменится. Чтобы в этом случае обратиться к глобальной переменной, необходимо перед названием переменной указать название модуля и оператор .
(точка). Пример сохранения промежуточного значения между вызовами подпрограммы в глобальной переменной приведен в листинге 9.20.
Листинг 9.20. Сохранение промежуточного значения в глобальной переменной
Dim x As Integer
Sub Сумма(x As Integer)
Module1.x = Module1.x + x
End Sub
Sub Тест() ' Запускаем эту процедуру
x = 0
Сумма 10
Сумма 20
Debug.Print x ' 30
End Sub
Статические переменные позволяют отказаться от использования глобальных переменных, для сохранения промежуточных значений между вызовами подпрограммы. Инициализация статической переменной производится только при первом вызове подпрограммы. После завершения работы подпрограммы статическая переменная сохраняет свое значение, которое доступно при следующем вызове подпрограммы. При объявлении статической переменной перед именем переменной вместо ключевого слова Dim
указывается ключевое слово Static
. В качестве примера переделаем предыдущий пример и используем статическую переменную вместо глобальной (листинг 9.21).
Листинг 9.21. Использование статических переменных
Function Сумма(y As Integer) As Integer
Static x As Integer ' Статическая переменная
x = x + y
Сумма = x
End Function
Sub Тест() ' Запускаем эту процедуру
Debug.Print Сумма(10) ' 10
Debug.Print Сумма(20) ' 30
End Sub
Статическими могут быть не только переменные, но и подпрограммы. Если перед ключевыми словами Sub
и Function
указать ключевое слово Static
, то все локальные переменные внутри подпрограммы будут статическими, т. е. будут сохранять свое значение между вызовами подпрограммы. Переделаем предыдущий пример и объявим функцию Сумма()
статической (листинг 9.22).
Листинг 9.22. Использование статических подпрограмм
Static Function Сумма(y As Integer) As Integer
Dim x As Integer
x = x + y
Сумма = x
End Function
Sub Тест() ' Запускаем эту процедуру
Debug.Print Сумма(10) ' 10
Debug.Print Сумма(20) ' 30
End Sub
Помощь сайту
Yandex-деньги: 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов