Операторы
Любая программа представляет собой последовательность операторов. Мы уже рассматривали те операторы, которые предназначены для объявления переменных и определения типов. В этом разделе мы расскажем об операторах для выполнения действий с данными и для управления порядком выполнения других операторов. Существует три основных типа операторов: операторы присваивания, условные операторы и операторы цикла. Рассмотрим их по порядку.
Операторы присваивания необходимы для изменения значения переменных. В VBA существует четыре вида операторов присваивания:
- Let (прямое присваивание);
- LSet (левое присваивание);
- RSet (правое присваивание);
- set (объектное присваивание).
С оператором прямого присваивания мы уже встречались (=), правда, в несколько укороченном виде.
[
Let
] имяПеременной = <выражение>
Ключевое слово Let является наследием предшествующих версий языка Basic, его употребление ничего не добавляет и не убавляет. Подобные атавизмы – не редкость в любом языке программирования, они необходимы для совместимости разных версий программного продукта.
С помощью оператора присваивания происходит обычное присваивание значения выражения, стоящего справа от знака =, переменной, имя которой стоит слева от знака =. Причем тип присваиваемого значения должен соответствовать типу переменной. Бессмысленной будет следующая конструкция:
Dim
Temp
As
Integer
Temp =
"Строка"
Встретив подобное присваивание, компилятор выдаст сообщение об ошибке. Но есть и ряд исключений. В следующей программе сначала рассматривается присваивание переменным встроенных типов стандартных значений. Затем следует объявление трех записей типа Person, после чего идет присваивание значений первым двум записям, но через прямое обращение к полям записей. В последующем же присваивании происходит одновременное присваивание значений всех полей записи peopie2 соответствующим полям записи people3.
Программа 20.7. Присваивание
Sub
LetEqual()
Dim
age
As
Integer
, str$
Dim
people1
As
Person, people2
As
Person, peoples
As
Person
age = 32
str =
"Жизнь прекрасна"
people1.name =
"Александр"
people2.name = people1.name +
"a"
Msgbox(people2.name)
peoples = people2
Msgbox(peopleS.name)
End
Sub
Следующий оператор присваивания, который мы рассмотрим в данном разделе, – LSet. Он служит для специфического присваивания строк с одновременным выравниванием слева, а также для присваивания значения записи одного типа записи другого типа.
LSet имяСтроковойПвременной = СтроковоеВыражение LSet имяПеременной1 = имяПеременной2
В первом случае результатом присваивания является строка той же длины, что и у значения имяСтроковойпеременной. Если значение выражения СтроковоеВыражение длиннее, то лишние символы справа удаляются, если короче – заполняются пробелами справа.
Во втором случае присваивание аналогично вышеописанному случаю с использованием оператора Let, но только здесь не обязательно, чтобы типы полей совпадали. Конечно, подобное присваивание чревато сообщениями компилятора о несоответствии типов. Мы советуем использовать данную конструкцию с очень большим вниманием.
В программе 20.8 инициализированы две строковых переменных, после чего происходит левое присваивание и вывод значения переменной str1 ("<-Влево").
Программа 20.8. Левое присваивание
Sub
LsetEqual()
Dim
Str1
As
String
, Str2
As
String
Str1 =
"0123456789"
Str2 =
"<-Влево"
Lset Str1 = Str2
Msgbox(Str1)
End
Sub
Оператор RSet аналогичен оператору LSet, только в данном случае выравнивание происходит справа. Помимо этого, оператор RSet нельзя использовать для присваивания записей.
Последний оператор присваивания – объектное присваивание set. К сожалению, мы еще не рассказывали об объектах и описание этого оператора сейчас будет бессмысленным, но придет время, и о нем будет рассказано (см. раздел "Классы и объекты").