Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Глобальные и локальные переменные
Глобальные переменные — это переменные, объявленные в программе вне подпрограммы в самом начале модуля. В VBA глобальные переменные видны в любой части модуля, включая подпрограммы (листинг 9.18).
Листинг 9.18. Глобальные переменные
Dim glob1 As Integer, glob2 As Integer
Sub A(glob2)
Debug.Print "Значение глобальной переменной glob1 ="; glob1
glob2 = glob2 + 10
Debug.Print "Значение локальной переменной glob2 ="; glob2
End Sub
Sub Тест() ' Запускаем эту процедуру
glob1 = 10
glob2 = 5
A 77 ' Вызываем процедуру
Debug.Print "Значение глобальной переменной glob2 ="; glob2
End Sub
Результат выполнения:
Значение глобальной переменной glob1 = 10
Значение локальной переменной glob2 = 87
Значение глобальной переменной glob2 = 5
Переменной glob2
внутри процедуры A()
присваивается значение, переданное при вызове. По этой причине создается новая переменная glob2
, которая является локальной. Все изменения этой переменной внутри функции не затронут значение одноименной глобальной переменной.
Локальные переменные — это переменные, объявленные внутри подпрограммы. Если имя локальной переменной совпадает с именем глобальной переменной, то все операции внутри функции осуществляются с локальной переменной, а значение глобальной не изменяется. Локальные переменные видны только внутри тела подпрограммы (листинг 9.19).
Листинг 9.19. Локальные переменные
Option Explicit
Dim glob1 As Integer
Sub A()
Dim local1 As Integer
Dim glob1 As Integer
local1 = 77 ' Локальная переменная
glob1 = 25 ' Локальная переменная
Debug.Print "Значение glob1 внутри процедуры ="; glob1
End Sub
Sub Тест() ' Запускаем эту процедуру
glob1 = 10 ' Глобальная переменная
Debug.Print "Значение glob1 до вызова процедуры ="; glob1
A ' Вызываем процедуру
Debug.Print "Значение glob1 после вызова процедуры ="; glob1
' Переменная local1 не видна вне процедуры A()
'Debug.Print local1 ' Инструкция вызовет ошибку
End Sub
Результат выполнения:
Значение glob1 до вызова процедуры = 10
Значение glob1 внутри процедуры = 25
Значение glob1 после вызова процедуры = 10
Как видно из примера, переменная local1
, объявленная внутри процедуры A()
, недоступна вне процедуры. Объявление внутри процедуры A()
локальной переменной glob1
не изменило значения одноименной глобальной переменной.
Помощь сайту
Yandex-деньги: 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов