Но каковы правила VBA для порядка выполнения операций в отсутствие скобок? Если выражение содержит знаки операций из двух или нескольких категорий, то VBA выполняет операции из разных категорий в следующем порядке.
1. Арифметические операции и конкатенация.
2. Операции сравнения.
3. Логические операции.
Внутри каждой категории VBA тоже имеет правила порядка выполнения операций.
Арифметические операции, сравнение и логические операции осуществляются в порядке, соответствующем их представлению в табл. 7.2. Операции сравнения в VBA выполняются в том порядке, в каком они идут, слева направо. Если в выражении встречается несколько операций одного уровня, они тоже обрабатываются слева направо.
Таблица 7.2. Порядок выполнения операций в VBA (внутри каждой категории операции выполняются в том порядке, в котором приведены)
Знаки операций | Операции |
Арифметические |
́ | Возведение в степень |
- | Отрицание |
* или / | Умножение или деление |
\ | Целочисленное деление |
Mod | Вычисление остатка деления |
+ или - | Сложение или вычитание |
Конкатенация |
& | Конкатенация строк |
Сравнения |
= | Равенство |
<> | Неравенство (не равно) |
< | Меньше |
> | Больше |
<= | Меньше или равно |
>= | Больше или равно |
Like | Сравнение строк с заданным образцом |
Is | Проверка идентичности ссылок на объекты |
Логические |
Not | Логическое НЕТ |
And | Логическое И |
Or | Логическое ИЛИ |
Хоr | Логическое Исключительное ИЛИ |
Eqv | Логическая эквивалентность |
Imp | Логическая импликация |
Вычисления с помощью арифметических операторов
В VBA имеется семь знаков арифметических операций (см. табл. 7.2). Что делают четыре из них, вы определите сами с первого взгляда на них - это •+-, -, * и /.Например, результатом выражения 6/2 будет, конечно же, 3.
А вот остальные три знака арифметических операций не так очевидны. Они выполняют следующие действия.
* Операция ́ возводит первое значение в выражении в степень, равную второму значению. Например, результатом вычисления выражения
2 ́ 3
будет 8 (2 в 3 степени).
* Операция \ представляет целочисленное деление, в результате которого всегда получается целое число. VBA просто отбрасывает дробную часть, а не округляет результат. (Замечание. Эта операция представлена обратной косой чертой в отличие от обычного деления, которое представлено обычной косой чертой.) Например.
244 \ 7
равно 34, что соответствует числу полных недель в периоде времени, составляющем 244 дня.
* При выполнении операции Mod первое значение тоже делится на второе, но в качестве результата возвращается остаток от деления. Продолжая тему предыдущего примера, если вы захотите узнать, на сколько дней период времени в 244 дня превышает 34 полностью поместившиеся в нем недели, нужным выражением для вычисления этого будет