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

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

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

В таком случае основная часть программного кода может выглядеть следующим образом:

If bytPaзмepO6yви > 45 Then

curЗарплатаДжо = 75000

End If

Основным недостатком такого подхода является то, что при этом величина зарплаты определяется в программе "жестко". Если стоимость жизни возрастет и поэтому потребуется увеличить зарплату, вам придется найти соответствующее значение в программе и увеличить его. А если значение использовано в программе несколько

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

Вот тот же фрагмент программного кода, заново переписанный для работы с подходящей константой:

Constc curСамаяБольшаяЗарплата As Currency = 75000

If bytPaзмepO6yви > 45 Then

curЗарплатаДжо = curСамаяБольшаяЗарплата

End If

При таком подходе вы легко найдете объявление константы в самом начале модуля или процедуры, чтобы изменить значение на новое. В результате это новое значение заменит старое во всех частях программы, где используется константа. Кроме того, программный код будет легче понять: вместо того, чтобы спрашивать себя "Что это за число 75000?", вы сможете с первого взгляда уверенно сказать, что Джо будет получать самую большую зарплату, если он носит обувь 46 размера.

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

Использование констант для атрибутов

Константы очень удобны при работе с группами именованных элементов типа дней недели (понедельник, вторник и т.д.) или характеристик типа вкусовых признаков (сладкий, соленый, кислый, горький). Вместо того чтобы оперировать в программе строками с названиями этих элементов, проще назначить каждому элементу' некоторое число и объявить константу с именем, соответствующим названию элемента, равную этому числу. После этого в программе можно использовать вместо чисел названия. Вот пример программного кода, в котором используется такой подход:

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 (внутри каждой категории операции выполняются в том порядке, в котором приведены)

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

Сын Тишайшего

Яманов Александр
1. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.20
рейтинг книги
Сын Тишайшего

"Искажающие реальность" Компиляция. Книги 1-14

Атаманов Михаил Александрович
Искажающие реальность
Фантастика:
боевая фантастика
космическая фантастика
киберпанк
рпг
5.00
рейтинг книги
Искажающие реальность Компиляция. Книги 1-14

Школа. Первый пояс

Игнатов Михаил Павлович
2. Путь
Фантастика:
фэнтези
7.67
рейтинг книги
Школа. Первый пояс

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!

Аргумент барона Бронина 4

Ковальчук Олег Валентинович
4. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 4

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Измена. Право на обман

Арская Арина
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на обман

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Жаба с кошельком

Донцова Дарья
19. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
8.26
рейтинг книги
Жаба с кошельком

Бастард Императора. Том 11

Орлов Андрей Юрьевич
11. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 11

Академия чаросвет. Тень

Ярошинская Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Академия чаросвет. Тень

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4