Основы программирования на VBA. Регеда В.В - 38 стр.

UptoLike

Составители: 

другим переменным программы с тем же именем. Как и для функции, по-
ложение процедуры не существенно, кроме того, нельзя "случайно" по-
пасть в процедуру непосредственно от предыдущего оператора, ни с по-
мощью операторов GOTO, GOSUB или RETUN, хотя внутри процедуры эти
операторы действуют. Определения процедур не могут быть вложенными,
хотя внутри процедуры могут быть вызовы других процедур и функций.
Все переменные в процедуре по умолчанию являются локальными.
Локальные переменные являются динамическими: место под них выделя-
ется лишь при выполнении процедуры, после же выполнения процедуры
они автоматически пропадают. Однако можно объявить или с помощью
оператора SHARED глобальные переменные (переменные, которые берут
свои значения из предыдущих программных строк), или с помощью опера-
тора STATIC статические переменные (переменные, для которых важно,
чтобы они не изменились при повторных вызовах).
Определение процедуры должно заканчиваться оператором END
SUB, который возвращает управление в программу, передавая его к опера-
тору, следующему за вызовом процедуры. Для выхода из процедуры в про-
извольном месте используется оператор EXIT SUB.
Для вызова процедуры используется оператор CALL, имеющий фор-
мат:
CALL имя ([список параметров])
имя это имя процедуры, определенной с помощью оператора SUB;
список параметров это последовательность разделенных запятыми
переменных, выражений или констант, передаваемых процедуре, в качест-
ве фактических параметров (по типу они должны соответствовать фор-
мальным параметрам в определении процедуры).
Ниже приведена, программа для вычисления суммы S=
=
6
1i
2
ii
)ba(
i
,
где
=
нечетноеiесли,i
четноеiесли,i
a
2
i
,
=
нечетноеiесли,i
четноеiесли,i
a
3
2
i
.
FOR i=1 TO 6
CALL ab(i)
s=s+(a-b)^2
NEXT
PRINT "S="; s
END
другим переменным программы с тем же именем. Как и для функции, по-
ложение процедуры не существенно, кроме того, нельзя "случайно" по-
пасть в процедуру непосредственно от предыдущего оператора, ни с по-
мощью операторов GOTO, GOSUB или RETUN, хотя внутри процедуры эти
операторы действуют. Определения процедур не могут быть вложенными,
хотя внутри процедуры могут быть вызовы других процедур и функций.
      Все переменные в процедуре по умолчанию являются локальными.
Локальные переменные являются динамическими: место под них выделя-
ется лишь при выполнении процедуры, после же выполнения процедуры
они автоматически пропадают. Однако можно объявить или с помощью
оператора SHARED глобальные переменные (переменные, которые берут
свои значения из предыдущих программных строк), или с помощью опера-
тора STATIC статические переменные (переменные, для которых важно,
чтобы они не изменились при повторных вызовах).
      Определение процедуры должно заканчиваться оператором END
SUB, который возвращает управление в программу, передавая его к опера-
тору, следующему за вызовом процедуры. Для выхода из процедуры в про-
извольном месте используется оператор EXIT SUB.
      Для вызова процедуры используется оператор CALL, имеющий фор-
мат:
       CALL имя ([список параметров])
     имя − это имя процедуры, определенной с помощью оператора SUB;
список параметров − это последовательность разделенных запятыми
переменных, выражений или констант, передаваемых процедуре, в качест-
ве фактических параметров (по типу они должны соответствовать фор-
мальным параметрам в определении процедуры).
                                                                      6
       Ниже приведена, программа для вычисления суммы S= ∑ (a ii − b i ) 2 ,
                                                                     i =1

          ⎧i, если i − четное            ⎧i , если i − четное
                                           2

где a i = ⎨ 2                     , ai = ⎨ 3                     .
          ⎩i  , если i − нечетное        ⎩i  , если i − нечетное
                       FOR i=1 TO 6
                             CALL ab(i)
                             s=s+(a-b)^2
                       NEXT
                             PRINT "S="; s
                        END