- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
VBA для чайников - Стив Каммингс
Шрифт:
Интервал:
Закладка:
Объявление констант
Для объявления констант используется ключевое слово Const:
Const cstrPetsName As String = "Пушок"
Const cDateTarget Date As Date = #5/26/2000#
Const cboolUp As Boolean = True
Все вполне аналогично объявлению переменных, за исключением того, что при объявлении константы необходимо указать ее значение. При объявлении констант можно указывать те же типы данных, что и для переменных, за исключением типа Object, пользовательского типа данных и пока что типа Decimal (см. табл. 7.1).
Обратите внимание, что имена объявленных мною констант начинаются со строчной буквы "с" (означающей сокращение от constant - константа). Таким образом, по имени сразу видно, что это константа, а не переменная. Если вас этот префикс не устраивает, выберите для своих констант другой, более подходящий вам.
Вы можете последовать примеру VBA и Visual Basic и выбрать префикс, соответствующий вашему имени, или префикс, соответствующий имени вашего VBA-проекта. VBA и Visual Basic идентифицируют константы с помощью префикса vb - например vbBl ue (константа, представляющая числовой код для синего цвета, а именно 16711680) или vbKeyTab (константа, представляющая числовой код клавиши <Tab>, а именно 9). VBA приложения часто идентифицируют свои константы с помощью префикса, специфического для этого приложения, например xlBarStacked (константа, представляющая числовой код для линейчатой диаграммы в Excel, а именно 58).
Кстати, константы, определенные VBA или VBA-приложением, тоже можно использовать в своих программах. Информацию об этих зарезервированных константах можно получить из справочной системы или в окне обозревателя объектов (см. главу 5).
Плоды использования констант
Объявив константу, вы получаете возможность использовать ее везде, где в программе потребуется представленное именем этой константы буквальное значение. Скажем, вы создаете программу, которая должна определять зарплату работника в зависимости от размера его обуви.
В таком случае основная часть программного кода может выглядеть следующим образом:
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 (внутри каждой категории операции выполняются в том порядке, в котором приведены)
Знаки операций
Операции
Арифметические
́
Возведение в степень
-
Отрицание
* или /
Умножение или деление
Целочисленное деление
Mod
Вычисление остатка деления
+ или -
Сложение или вычитание
Конкатенация
&
Конкатенация строк
Сравнения
=
Равенство
<>
Неравенство (не равно)
<
Меньше
>
Больше
<=
Меньше или равно
>=
Больше или равно
Like
Сравнение строк с заданным образцом
Is
Проверка идентичности ссылок на объекты

