Программа 20.8. Левое присваивание



Программа 20.8. Левое присваивание

Sub LsetEqual()

Dim Strl As String, Str2 As String

Strl = "0123456789"

Str2 = "<-Влево"

Lset Strl = Str2

Msgbox(Strl)

End Sub

Оператор RSet аналогичен оператору LSet, только в данном случае выравнивание происходит справа. Помимо этого, оператор RSet нельзя использовать для присваивания записей.

Последний оператор присваивания — объектное присваивание set. К сожалению, мы еще не рассказывали об объектах и описание этого оператора сейчас будет бессмысленным, но придет время, и о нем будет рассказано (см. раздел 20.5 "Классы и объекты").

После операторов присваивания перейдем к рассмотрению операторов ветвления. Как и во многих языках программирования, в VBA имеются различные управляющие конструкции, позволяющие изменять порядок выполнения операторов программы. При отсутствии управляющих конструкций операторы программы выполняются последовательно, с первого до последнего. В некоторых простых случаях этого бывает достаточно, но обычно все-таки требуется изменить порядок выполнения операторов при выполнении определенных условий либо пропуская выполнение некоторых операторов, либо, наоборот, многократно повторяя их. Оказывается, для реализации любых алгоритмов достаточно иметь только два вида управляющих конструкций — ветвления и циклы. Первым из рассматриваемых нами операторов ветвления является стандартный условный оператор ветвления if. . .Then.. .Else. Его использование позволяет проверить некоторое условие и в зависимости от его истинности выполнить ту или иную группу операторов.

Замечание
Замечание 1

Оператор If. . .Then. . .Else называют также условным оператором.

Для данного оператора есть два варианта синтаксиса — в одну строку и в несколько:

If условие Then [блокОлераторов1] [Else блокОператоров2] ИЛИ

If условие1 Then



[блокОператоров 1] [ElseIf условием Then

[ блокОпера торовN] ... [Else

[блокОператоров_Е1зе]] End If

Но обо всем по порядку. После ключевого слова if стоит условие. В качестве условия можно использовать логическое выражение, возвращающее значение True или False. Также можно использовать арифметическое выражение, в этом случае нулевое его значение эквивалентно False, ненулевое — True. Если условие возвращает True, то выполняется блокоператоровJ, если

False — блокОператоров2, представляющий собой последовательность разделенных двоеточием операторов. Причем необходимо наличие хотя бы одного из блоков операторов.

Такова семантика первой формы записи (в одну строку), являющаяся частным случаем второй. Вторая же форма записи представляет развернутую цепочку ветвления, когда приходится делать выбор одного альтернативного действия из целой группы на основе проверки нескольких различных условий. В подобном случае также необходимо наличие хотя бы одного из блоков операторов.

Вторая схема действует по следующему принципу. Проверяется условие1. Если оно истинно, то выполняется блокоператоров! и осуществляется переход к оператору, стоящему за ключевым словом End if. Если же оно ложно, то проверяется условие.? и т. д. Если проверка дошла до последнего оператора Eiseif и условием тоже оказывается ложным (то есть все вышестоящие условия ложны ), выполняется блокОператоров_Е1зе.

В программе 20.9 инициализируются три переменные а, ь и с. Далее показывается использование условного оператора в виде одной строки с использованием разделителя операторов — двоеточия. Поскольку проверяемое условие истинно, выполняются присваивание (с = c+1) и вывод (с = и).

В следующей конструкции проверяется условие (с > 20), т. к. условие ложно, то оператор присваивания (с = c+l) не выполняется. Далее проверяется условие (с = -а + b+ 1) — оно истинно, следовательно, выполняется вывод (с = ll). В противном случае вывелось бы "Не может быть" (что исключено).



Содержание раздела