VBA для чайников
Шрифт:
Const cbytСладкий = 1, cbytСоленый = 2
Const cbytКислый = 3, cbytГорький = 4
Do While intВкус = cbytКислый
ДобавитьСладкого
intВкус = ПробаВкуса
Loop
Знаки операций
В VBA операция представляет собой либо специальный символ, либо ключевое слово в выражении, комбинирующем два значения (субоператора, если желаете) для получения нового результата.
В следующем выражении операция + (операция сложения) увеличивает на 3 значение переменной intA:
intA + 3
Значением выражения и будет результат такого сложения. (Не забывайте, что выражение не может выполняться само по себе - оно должно быть частью VB А-оператора, например intB = intA + 3. По поводу выражений см. выше раздел ''Выражен-и-я"'.)
VBA
При использовании со строками текста знак + представляет конкатенацию, т.е. соединение двух строк в одну, а не сложение. Но для строк лучше использовать "настоящий" знак конкатенации -символ &. VBA интерпретирует выражение
"Меня зовут " & "Боря"
как "Меня зовут Боря".
Кстати, знак операции + можно использовать для того, чтобы прибавлять к числам текст, если текст состоит только из цифр. Например, в результате выполнения оператора
intC = 123 + "456"
значением переменной intC будет 579.
А вот пример использования операции сравнения:
Tan(sngAngleA) <> 1.4
Знак <> представляет операцию "не равно"'. С его помощью проверяется, не равны ли два значения в выражении, а результатом его выполнения будет либо True (Истина), либо False (Ложь). Если тангенс sngAngleA не равен 1.4, результатом выражения будет True, а иначе результатом будет False.
Получение приоритета
В более сложных выражениях, включающих несколько знаков операций, VBA нужно знать, какие операции выполнять первыми, вторыми, а какие третьими. В выражении intA + intB * intC два знака операций: + (операция сложения) и * (операция умножения). На русском это выражение читается как "intA плюс intB умножить на intC".
В данном выражении символ * идет вторым, но он имеет приоритет перед операцией сложения. Сначала VBA умножит intB на intC, а уж затем добавит полученный результат к intA. Как можно догадаться из этого примера, VBA следует определенной последовательности выполнения отдельных частей выражения, когда в выражении несколько знаков операций.
Чтобы изменить последовательность операций, порождаемую приоритетами, в выражении используются скобки. Если вы напечатаете (intA + intB) * intC то VBA сначала сложит две переменные, а затем умножит результат на значение переменной intC.
Но каковы правила 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 полностью поместившиеся в нем недели, нужным выражением для вычисления этого будет
244 Mod 7
что в результате дает 6. Обратите внимание, что результатом выполнения операции Mod всегда будет целое число. Если вы захотите узнать дробную часть от деления в десятичной форме, используйте выражение типа
(244 Mod 7) / 7
Это то же самое, что и 6/7, или примерно 0,857.
Сравнение значений
В VBA используется шесть операций сравнения для сравнения числовых и строковых значений, а также две специальные операции Like (для строк) и Is (для объектов).