Примеры использования оператора присваивания
№ | Фрагмент текста программы | Результат |
Sub q() Const pi = 3.14 Dim a%, b!, c#, d As Boolean Dim e As Date, f$ a = 1 / 3 b = 1 / 3 c = 1 / 3 d = 1 / 3 e = 1 / 3 f = a & vbCr & b & vbCr & c & _ vbCr & d & vbCr & e & vbCr & pi MsgBox f End Sub | ![]() | |
a=1 : b=2 : a=b : b=a | a=2 b=2 | |
a=1 : b=2 : a=a+b : b=a*b | a=3 b=6 | |
a=1 : b=2 : a=a+b : b=a : a=a=a | a=-1(True) b=3 | |
c=a : a=b : b=c | a и b меняются значениями | |
6 * | a=a+b : b=a-b : a=a-b | a и b меняются значениями |
7 * | a=y*2 : y=y/x : x=x*x : x=x+y+a | x=x*x+y/x+y*2 |
Более подробных комментариев заслуживает пример 1 из таблицы 21. Оператор присваивания здесь задаёт значения переменных a, b, c, d, e, f. Оператор Sub … End Sub задаёт описание подпрограммы-процедуры с именем q, внедрённой в данный электронный документ и запускаемой нажатием следующей кнопки .
Примечание: предполагается, что параметры безопасности Microsoft Office Word разрешают запуск макросов (активного содержимого). Более подробные сведения о выполнении программ в среде VBA можно получить, изучая справочную систему, соответствующую учебную литературу [14], а также выполняя задания лабораторного практикума и делая соответствующие выводы [19, 23].
Оператор Const задаёт значение константы pi, а оператор Dim объявляет переменные, причём все они относятся к разным типам (см. табл. 17). Именно поэтому присваивание разным переменным значения одного и того же выражения приводит к получению совершенно различных результатов.
В операторе, задающем значение строковой переменной f, использованы предопределённые константы vbCr, обозначающие непечатаемый символ возврата каретки – переход на новую строку. Поэтому на экране значение переменной f отображается не в одну, а в несколько строк. Символ подчёркивания в этом же выражении играет аналогичную роль в синтаксисе программы, позволяя продолжить запись текущего оператора со следующей строки.
В качестве оператора, отображающего на экране в окне сообщения значение переменной f, выступает функция MsgBox.
Достаточно простые примеры 2 и 3 позволяют лучше понять работу оператора присваивания и заодно закрепить понятие переменной. Особенность примера 4 заключается в последнем операторе a=a=a. Здесь второй знак равенства означает не присваивание, а сравнение, результатом которого в данном случае будет логическое значение «Истина», которому соответствует число -1.
В примерах 5 и 6 выполняется обмен значениями двух переменных а и b, причём в примере 5 это делается с помощью третьей переменной с, а в примере 6* демонстрируется один из способов, не требующих использования дополнительной переменной. Последовательность операторов присваивания в примере 7* эквивалентна вычислению выражения, содержащего несколько операций.
11.2 Условный оператор IF … THEN
Далеко не всякий алгоритм можно описать только линейными структурами. Условный оператор позволяет реализовать алгоритмическую структуру «Ветвление», показанную на рисунке 11.1, и выполнить нужный вариант вычислений из двух (или более) предусмотренных в зависимости от выполнения некоторых условий (логических выражений).
Рис. 11.1. Базовая алгоритмическая структура «Ветвление»
Для реализации структуры «Ветвление» (Если – То – Иначе) и её частного случая «обход» (Если – То) в VBA используется так называемый строчный вид оператора IF … THEN. Его синтаксис имеет следующий вид:
IFусловие THENоператоры_А [ELSEоператоры_В]
В качестве условия (англ. condition) может выступать любое выражение, значение которого расценивается как истина (не ноль) или ложь (ноль). А в качестве операторов А и В – один или несколько, разделённых двоеточиями, операторов. Если опустить часть оператора в квадратных скобках, то будет реализована структура «обход». Приведём пример использования оператора IF … THEN, в котором можно обойтись без комментариев:
IFрейтинг < 60 THENитог = «незачёт» ELSEитог = «зачёт»
Блочный вид оператора IF … THEN позволяет, кроме того, реализовать более сложное вложенное ветвление. Синтаксис этого оператора имеет следующий вид:
IF условие_1 THEN
[блок_операторов_1]
[ELSEIF условие_2 THEN
[блок_операторов_2]]
…
[ELSE
[блок_операторов_иначе]]