Если в выражении используется более одного оператора, то вычисление значения этого выражения регламентируется правилами приоритета выполнения операций (см. таблицу ниже).
Если в выражении используются операторы, которые имеют одинаковый приоритет, то они выполняются последовательно, слева направо.
Если выражение содержит знаки операций из разных категорий, то VBA выполняет операции в следующем порядке:
- Арифметические операции и конкатенация.
- Операции сравнения.
- Логические операции.
Приоритетность операторов VBA
| Оператор | Название | Приоритет |
Арифметические операторы и конкатенация |
||
| ^ | Возведение в степень | 1 |
| *, / | Умножение и деление | 2 |
| \ | Деление без остатка | 3 |
| Mod | Остаток | 4 |
| +, - | Сложение и вычитание | 5 |
| & | Конкатенация | 6 |
Операторы сравнения |
||
| = | Равно | 7 |
| <> | Не равно | 8 |
| < | Меньше | 9 |
| > | Больше | 10 |
| <= | Меньше или равно | 11 |
| >= | Больше или равно | 12 |
| Like | Сравнение строковых выражений | 13 |
| Is | Проверка идентичности ссылок на объекты | 14 |
Логические операторы |
||
| Not | Логическое НЕТ | 15 |
| And | Логическое И | 16 |
| Or | Логическое ИЛИ | 17 |
| Xor | Логическое исключающее ИЛИ | 18 |
| Eqv | Логическая эквивалентность | 19 |
| Imp | Логическая импликация | 20 |
Операторы с меньшим значением выполняются первыми.
Например, в выражении 10 + 12 * 2 сначала будет выполнено умножение (12 * 2 = 24), а потом сложение (10 + 24).
Для изменения приоритетности используют скобки.
Часть выражения заключённая в скобки вычисляется в первую очередь, независимо от приоритета операторов.
Например, в выражении (10 + 12) * 2 сначала будет выполнено сложение (10 + 12 = 22), а потом умножение (22 * 2).
В выражении может быть сколько угодно уровней скобок, но все они обязательно должны быть парными.
Если скобки вложены одна в другую, то вычисление начинается с самого внутреннего уровня.
Например, в выражении ((10 + 2) * (15 - 5) - 10) * 2 сначала будет выполнено сложение 10 + 2 = 12, потом вычитание 15 - 5 = 10, потом умножение 12 * 10 = 120, затем вычитание 120 - 10 = 110 и в завершение умножение 110 *2 = 220.
