Ирина Фризен - Офисное программирование
• логическое выражение – вычисляется до значения типа boolean.
Очень важно контролировать и знать тип выражения, потому что если выражения содержат несовместимые типы, VBA выдает ошибку времени исполнения – ошибку несовпадения типов (type-mismatch). При обработке выражения, содержащего различные типы данных, VBA сначала пытается устранить любое различие типов, преобразуя значения в выражении в совместимые типы данных. Если устранить какие-либо различия преобразованием типов не удается, отображается ошибка времени исполнения и процедура прекращает выполняться.
Рассмотрим основные арифметические операторы, используемые в VBA (табл. 3).
Таблица 3
Арифметические операторыРассмотрим данные операторы более подробно.
Сложение
Оператор сложения (+) выполняет простое сложение. Оба операнда должны быть численными выражениями или строками, которые VBA может преобразовать в число. Оператор сложения можно также использовать для выполнения арифметических операций с данными типа Date.
Вычитание
Используется либо для вычитания одного числа из другого, либо для обозначения унарного минуса.
Унарный минус (unary minus) – это знак минус, который помещают перед числом (выражением) для указания того, что это отрицательное число (выражение). Поместить унарный минус перед числом или выражением означает то же, что умножить это число на минус 1.
Умножение
Оператор умножения (*) перемножает два числа; результатом выражения умножения является произведение двух операндов. Оба операнда в выражении умножения должны быть численными выражениями или строками, которые VBA может преобразовать в число.
Деление
Оператор деления (/) называют оператором деления чисел с плавающей точкой или действительных, чтобы отличать от оператора целочисленного деления. Оператор деления с плавающей точкой выполняет обычное арифметическое деление двух операндов. В выражениях деления первый операнд делится на второй операнд; результатом деления является частное. Оба операнда в выражении деления с плавающей точкой должны быть численными выражениями или строками, которые VBA может преобразовать в числа.
Целочисленное деление
Выражения, использующие оператор целочисленного деления (), всегда имеют результатом целое число без дробной части. Оба операнда в выражении целочисленного деления должны быть численными выражениями или строками, которые VBA может преобразовать в числа.
Деление по модулю
Деление по модулю (mod) дополняет целочисленное деление. В делении по модулю выражение возвращает только остаток операции деления как целое. Оба операнда в выражении деления по модулю должны быть численными выражениями или строками, которые можно преобразовать в число.
Возведение в степень
Оператор возведения в степень (^) возводит число в степень. Оба оператора в выражении возведения в степень должны быть численными выражениями или строками, которые VBA может преобразовать в числа. Операнд слева от оператора возведения в степень может быть отрицательным числом, только если операнд справа является целым. Если какой-либо операнд является равным Null, то результатом выражения возведения в степень также будет Null; иначе результат выражения будет иметь тип Double.
Оператор Like
Оператор Like дает возможность выполнять особый тип операции сравнения строк, и его можно использовать только со строками.
Оператор Like тестирует строку для определения того, совпадает ли она с заданным шаблоном.
Синтаксис:
выражение1 like выражение2,
где выражение1 – любое строковое выражение VBA;
выражение2 – строковое выражение, специально созданное для задания шаблона, который оператор Like сравнивает с выражением1.
Результатом выражения Like является True, если первый операнд (выражение1) совпадает с шаблоном во втором операнде (выражение2); иначе результатом выражения будет False. Оба операнда в этом выражении должны быть строковыми выражениями, или VBA отобразит сообщение об ошибке несовпадения типов.
Шаблон, с которым должна сравниваться строка, задается с использованием различных специальных символов. В табл. 4 содержатся методы и символы для создания образцов совпадения для оператора Like.
Таблица 4
Символы совпадения с образцом для оператора LikeЛогические операторы
Чаще всего логические операторы используются для объединения результатов отдельных выражений сравнения, чтобы создать сложные критерии для принятия решений в процедуре, или для создания условий, при которых группа операторов должна повторяться (табл. 5).
Таблица 5
Логические операторыСложное (составное) выражение – это любое выражение, образованное из двух или более выражений. Приоритеты выполнения операций при вычислении сложных выражений такие же, как и в любом языке программирования.
Изменение порядка выполнения операторовРассмотренные операторы выполняются в линейном порядке. При использовании VBA-операторов изменение порядка выполнения операторов определяется условием или набором условий, при которых VBA выполняет ту или иную ветвь кода процедуры.
Оператор условного перехода – это структура, которая выбирает ту или иную ветвь кода процедуры на основе некоторого предопределенного условия или группы условий.
Оператор безусловного перехода – это оператор, просто изменяющий последовательность выполнения кода процедуры независимо ни от какого конкретного условия. Условный переход используется гораздо чаще, чем безусловный.
Простейшими VBA-операторами изменения порядка выполнения кода являются операторы If … Then и If … Then … Else.
Оператор If … Then позволяет выбрать единственную альтернативную ветвь кода в процедуре или функции.
Синтаксис:
If условие Then оператор(ы),
где условие – любое логическое выражение;
оператор(ы) – один, несколько или ни одного оператора VBA.
Вторая форма синтаксиса оператора If … Then называется блоком оператора if. В блоке оператора If… Then условие и операторы записываются в отдельных строках, причем заканчивается данный оператор ключевыми словами End If.
Синтаксис:
If условие Then
оператор 1
оператор 2
….
Оператор n
End If
Выбор одной из двух различных ветвей операторов в зависимости от определенного условия обеспечивает оператор
If … Then … Else
и If … Then … ElseIf.
Синтаксис однострочного оператора If … Then … Else:
If условие Then оператор1 Else оператор2,
где условие – любое допустимое логическое выражение;
операторы – один или несколько операторов VBA, которые должны находиться в одной и той же строке.
Блок операторов If … Then … Else легче читать и понимать, и поскольку можно располагать операторы в разных строках внутри блока оператора If … Then … Else, он не имеет ограничения по размеру и числу операторов, которые можно помещать в альтернативные ветви.
Синтаксис:
If условие Then
Оператор1
Else
Оператор2
End If
VBA, как и многие языки программирования, имеет условный оператор перехода для использования в случаях, когда необходимо выбирать из большего количества различных ветвей кода: оператор Select Case. Данный оператор работает во многом так же, как и оператор If. Ключевые слова Select Case используются со многими операторами Case, где каждый оператор Case проверяет появление другого условия и выполняется только одна из ветвей Case. Ветвь Case может содержать один, несколько или ни одного оператора VBA.
Синтаксис:
Select Case выражение
Case условие_1
Оператор_1
Case условие_2
Оператор_2
…..
Case условие_N
Оператор_N
[Case Else
Оператор_N+1
End Select,
где выражение – любое численное или строковое выражение;
условие_1, условие_2, условие_N – (каждый) представляет список логических выражений, отделенных запятыми;
оператор_1, оператор_2, оператор_N, оператор_N+1 – (каждый) представляет один, несколько или ни одного оператора.
В Select Case можно включать столько операторов Case условия, сколько необходимо.
Примечание. Написание неоднострочных операторов в программах производится именно так (в столбец), либо редактор будет выдавать ошибку написания.