Чтение онлайн

на главную - закладки

Жанры

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 (для объектов).

Заметьте, что знак равенства в YBA (=) используется в двух разных случаях.

В объявлении равенство используется для присваивания значения переменной (см. выше раздел "Размещение информации в переменных"), а в качестве операции сравнения знак равенства определяет, будут ли два значения одинаковыми.

Результатом вычисления выражения, основанного на этих операциях, всегда является либо True (Истина), либо False (Ложь). Например, вот выражение с использованием операции <= (меньше или равно):

intX <= 12

Если значением intX является 12, то результатом выражения будет False, поскольку 12 не меньше, чем 12.

Чаще всего выражения с операциями сравнения используются в условных операторах типа If . . . Then. Условные операторы будут подробно обсуждаться в главе 8, но следующий пример нелишний и здесь:

If intX = 2000 Then

Застолье

End If

Здесь с помощью знака операции - выясняется, равны ли значения по обе стороны от него. Если значения равны, то результатом выражения будет True (Истина), иначе False (Ложь); другими словами: '"Если значение intX равно 2000, то выполнить процедуру Застолье".

Сравнение строк

Знаки операций сравнения можно использовать для сравнения строк текста и чисел.

Выражение

"Петуния" = "Нарцисс"

в результате дает False - и это очевидно, поскольку эти две строки не одинаковы.

Но есть случаи, когда результат сравнения строк предсказать не так просто. Чтобы получать правильные результаты при сравнении строк, нужно знать, по каким правилам VBA решает, что одна строка '"больше", чем другая.

Если вы не потребуете сравнивать иначе, VBA будет использовать метод двоичного сравнения. Две строки будут сравниваться на основе числовых кодов входящих в эти строки символов, т.е. кодов, которыми символы представляются в программе. В такой системе кодирования наименьшие числа соответствуют знакам пунктуации, за ними следуют цифры, затем прописные буквы, строчные и, наконец, буквы с акцентами (последнее касается латинской кодировки, поскольку в случае кириллической колировки на месте букв с акцентами находятся русские буквы). В этом случае, ввиду того, что коды строчных букв больше кодов прописных букв, выражения "а" > "А" и "а" > "Z", например, оба дают в результате True.

При сравнении строк VBA начинает сравнивать первые символы этих строк. Если первые символы различны, большей строкой будет та. первый символ которой больше. Если же первые символы равны, VBA сравнивает следующие символы, и т.д.

Чтобы при сравнении использовался другой, интуитивно более понятный метод, поместите в раздел объявлений модуля оператор Option Compare Text.

В результате этого сравнение строк будет выполняться по алфавиту без учета регистра букв (но все равно будет считаться, что буквы с акцентами имеют более высокие коды, чем соответствующие им буквы без акцентов). В этом случае следующие выражения дадут в результате True (Истина):

"а" = "А"

"а" < "Z"

Сравнение строк разной длины

Но что будет, если придется сравнивать строки неравной длины? Если начало одной строки в точности совпадает с другой, более короткой строкой, то длинная строка считается больше короткой. Например:

"В горах, в пещере" > "В горах" дает в результате True (Истина).

Но если две строки различаются не только по длине, но и по содержанию в рамках сравнимой дойны, применяется общий критерий сравнения. Например.

Поделиться:
Популярные книги

Законы рода

Мельник Андрей
1. Граф Берестьев
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Законы рода

Мужчина не моей мечты

Ардова Алиса
1. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.30
рейтинг книги
Мужчина не моей мечты

Мастер 11

Чащин Валерий
11. Мастер
Фантастика:
боевая фантастика
попаданцы
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Мастер 11

Наследник

Майерс Александр
3. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наследник

Кодекс Крови. Книга ХVI

Борзых М.
16. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVI

Точка Бифуркации III

Смит Дейлор
3. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Точка Бифуркации III

Ратник

Ланцов Михаил Алексеевич
3. Помещик
Фантастика:
альтернативная история
7.11
рейтинг книги
Ратник

Третий. Том 5

INDIGO
5. Отпуск
Фантастика:
космическая фантастика
фантастика: прочее
5.00
рейтинг книги
Третий. Том 5

Идеальный мир для Лекаря 24

Сапфир Олег
24. Лекарь
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Идеальный мир для Лекаря 24

Воевода

Ланцов Михаил Алексеевич
5. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Воевода

Имперец. Том 3

Романов Михаил Яковлевич
2. Имперец
Фантастика:
боевая фантастика
попаданцы
альтернативная история
7.43
рейтинг книги
Имперец. Том 3

Я не бог. Книга XXXIV

Дрейк Сириус
34. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я не бог. Книга XXXIV

Запечатанный во тьме. Том 1. Тысячи лет кача

NikL
1. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 1. Тысячи лет кача

Товарищ "Чума" 3

lanpirot
3. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Товарищ Чума 3