Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Операторы
Операторы позволяют произвести определенные действия с данными. Например, операторы присваивания служат для сохранения данных в переменной, математические операторы позволяют произвести арифметические вычисления, а оператор конкатенации строк используется для соединения двух строк в одну. Рассмотрим операторы, доступные в VBA, подробно.
Математические операторы
Производить операции над числами позволяют следующие операторы:
+
— сложение:
Debug.Print 10 + 5 ' 15
Debug.Print 10.5 + 5 ' 15,5
Если в операции сложения участвуют значения типов Integer
и Long
, то результат вычисления будет иметь тип Long
:
Dim x As Long, y As Integer
x = 50: y = 10
Debug.Print TypeName(x + y) ' Long
-
— вычитание:
Debug.Print 10 - 5 ' 5
Debug.Print 10.5 - 5 ' 5,5
*
— умножение:
Debug.Print 10 * 5 ' 50
Debug.Print 10.5 * 5 ' 52,5
/
— деление. Результатом деления является вещественное число типовSingle
илиDouble
, даже если производится деление целых чисел. Пример:
Debug.Print 10 / 3 ' 3,33333333333333
Debug.Print TypeName(10 / 3) ' Double
\
— целочисленное деление. Вне зависимости от типа чисел остаток отбрасывается:
Debug.Print 10 \ 3 ' 3
Debug.Print 10.5 \ 2 ' 5
^
— возведение в степень:
Debug.Print 10 ^ 2 ' 100
Debug.Print 10.5 ^ 2 ' 110,25
Mod
— остаток от деления:
Debug.Print 10 Mod 2 ' 0 (10 - (10 \ 2) * 2)
Debug.Print 10 Mod 3 ' 1 (10 - (10 \ 3) * 3)
Debug.Print 10 Mod 4 ' 2 (10 - (10 \ 4) * 4)
Debug.Print 10 Mod 6 ' 4 (10 - (10 \ 6) * 6)
Если в операции участвуют вещественные числа, то они округляются до ближайших целых чисел еще до выполнения операции:
Debug.Print 10.5 Mod 2 ' 0 (10 - (10 \ 2) * 2)
Debug.Print 10.6 Mod 2 ' 1 (11 - (11 \ 2) * 2)
- унарный – (минус):
Debug.Print -(10) ' -10
Debug.Print -(-10) ' 10
Переменной типа Variant
можно присвоить специальное значение Null
, которое означает отсутствие значения. Результатом любой операции, в которой участвует переменная со значением Null
, будет значение Null
.
При выполнении операций над вещественными числами следует учитывать ограничения точности вычислений. Например, результат следующей операции может показаться странным:
Debug.Print (0.3 - 0.1 - 0.1 - 0.1) ' -2,77555756156289E-17
Ожидаемым был бы результат 0.0
, но, как видно из примера, мы получили совсем другой результат. Если необходимо производить операции с фиксированной точностью, то следует использовать тип Currency
:
Dim a As Currency, b As Currency, c As Currency, d As Currency
a = 0.3: b = 0.1: c = 0.1: d = 0.1
Debug.Print (a - b - c - d) ' 0
Операторы конкатенации строк
Для конкатенации (объединения двух строк в одну) строк предназначен оператор &
. Результат операции всегда будет иметь тип String
. Пример:
Debug.Print "Строка1" & " " & "Строка2" ' Строка1 Строка2
Если в операции участвует число, то оно будет автоматически преобразовано в строку:
Debug.Print "Строка" & " " & 10 ' Строка 10
Debug.Print "Строка" & " " & 1.6 ' Строка 1,6
Вместо оператора &
можно также использовать оператор +
, но в этом случае оба операнда должны быть строками. Если один из операндов является числом, то компилятор выведет сообщение об ошибке. Пример использования оператора +
:
Debug.Print "Строка1" + " " + "Строка2" ' Строка1 Строка2
Оператор присваивания
Оператор присваивания предназначен для сохранения значения в переменной. Значение переменной присваивается с помощью оператора =
таким образом:
<Переменная> = <Значение или выражение>
Пример сохранения целочисленного значения в переменной:
Dim x As Integer
x = 327
Приоритет выполнения операторов
В какой последовательности будет вычисляться приведенное ниже выражение?
x = 5 + 10 * 3 / 2
Это зависит от приоритета выполнения операторов. В данном случае последовательность вычисления выражения будет такой:
- Число 10 будет умножено на 3, т. к. приоритет оператора умножения выше приоритета оператора сложения.
- Полученное значение будет поделено на 2, т. к. приоритет оператора деления равен приоритету оператора умножения (а операторы с равными приоритетами выполняются слева направо), но выше чем у оператора сложения.
- К полученному значению будет прибавлено число 5, т. к. оператор присваивания
=
имеет наименьший приоритет. - Значение будет присвоено переменной
x
.
x = 5 + 10 * 3 / 2
Debug.Print x ' 20
С помощью скобок можно изменить последовательность вычисления выражения:
x = (5 + 10) * 3 / 2
Теперь порядок вычислений будет другим:
- К числу 5 будет прибавлено 10.
- Полученное значение будет умножено на 3.
- Полученное значение будет поделено на 2.
- Значение будет присвоено переменной
x
.
x = (5 + 10) * 3 / 2
Debug.Print x ' 22,5
Перечислим операторы в порядке убывания приоритета:
^
—возведение в степень.-x
— унарный минус.*
,/
— умножение, деление.- \ — целочисленное деление.
Mod
— остаток от деления.+
,-
— сложение, вычитание.=
— присваивание.
Помощь сайту
Yandex-деньги: 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов