Операторы
Любая программа представляет собой последовательность операторов. Мы уже рассматривали те операторы, которые предназначены для объявления переменных и определения типов. В этом разделе мы расскажем об операторах для выполнения действий с данными и для управления порядком выполнения других операторов. Существует три основных типа операторов: операторы присваивания, условные операторы и операторы цикла. Рассмотрим их по порядку.
Операторы присваивания необходимы для изменения значения переменных. В 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 ("<-Влево").
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
Программа 20.8. Левое присваивание
Sub LsetEqual() Dim Str1 As String, Str2 As StringStr1 = "0123456789"Str2 = "<-Влево"Lset Str1 = Str2 Msgbox(Str1) End SubОператор RSet аналогичен оператору LSet, только в данном случае выравнивание происходит справа. Помимо этого, оператор RSet нельзя использовать для присваивания записей.
Последний оператор присваивания – объектное присваивание set. К сожалению, мы еще не рассказывали об объектах и описание этого оператора сейчас будет бессмысленным, но придет время, и о нем будет рассказано (см. раздел "Классы и объекты").
