Объявление N1 перед процедурой сделано для того, чтобы переменная Nl была "видима" (в плане возможности использования) и в программе, и в подпрограмме. Переменные можно объявлять в двух местах:
· внутри программы или процедуры;
· в верхней части окна кода, которая называется областью общих объявлений модуля.
Если переменная объявлена в процедуре (как переменная j в последнем коде), то только эта процедура ее видит. Другие процедуры (если они есть) и программа не могут использовать значение этой переменной и менять его. Такую переменную называют локальной. Говорят также, что переменная видима на уровне процедуры.
Чтобы значение переменной было доступно всем процедурам данного модуля, ее надо объявить в области общих объявлений модуля (как объявлена переменная Nl в последнем коде). Тогда программа и все процедуры, определенные в данном модуле, могут использовать значение этой переменной и менять его. Такую переменную называют глобальной. Говорят также, что переменная видима на уровне модуля.
|
|
Сказанное относительно переменных относится и к пользовательским константам, но значение константы, естественно, нельзя менять.
Объявление необязательности параметра осуществляется при помощи ключевого слова Optional, которое ставится перед именем этого параметра в первой строке описания процедуры. Необязательный параметр должен иметь тип Variant.
Пример:
Sub Program4 ()
Dim vntA As Byte
Dim vntB As Byte
Dim С As Integer
vntA = 5
vntB = 10
С = Apt(vntA, vntB) ' Результат: vntB = 6, С = 625
vntB = 10
С = Apt(vntA) ' Результат: vntB = 10, С = 625
End Sub
Function Apt(ByVal а, Optional b As Variant)
If Not IsMissing(b) Then b = а + 1
Apt = а^4
End Function
В этом примере параметр b функции Apt является необязательным, о чем говорит Optional перед b. Словосочетание As Variant после b можно опустить.
В описании функции Ap t:
• Not - логическая операция;
• IsMissing -функция.
Значение IsMissing(b) равно True при отсутствии второго параметра в обращении к Apt, и False при наличии этого параметра.
Существует возможность указывать значение, которое должен принимать необязательный параметр при его отсутствии в обращении к процедуре.
Пример:
Sub Program5 ()
Dim vntA As Byte
Dim vnt~ As Byte
Dim vntC Аs Byte
vntA = 5
vntB = 10
Call Opt(vntA, vntC, vntB) 'Результат: vntC = 15
vntB = 10
Call Opt(vntA, vntC) 'Результат: vntC = 8
End Sub
Sub Opt(ByVal а, с, Optional b = З)
с = а + b