- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
VBA для чайников - Стив Каммингс
Шрифт:
Интервал:
Закладка:
Вторая из используемых функций Format вложена в функцию Iif. Ввиду того, что аргументом формат в данном случае является "а/р", возвращаемыми значениями будут просто либо "а", либо "р", в зависимости от того, превышает время 12 часов дня или нет. Обычно а/р используется как компонент более длинной строки аргумента формат, но в данном случае результат функции видеть не требуется, и он обрабатывается функцией Iif.
Функция Iif - это миниатюрная версия оператора If... Then (обсуждаемого в деталях в главе 32). Синтаксис этой функции следующий:
Iif (выражение, результатЕслиИстина, результатЕслиЛожь)
В переводе на "человеческий" язык функция работает следующим образом: если выражение есть истина, то функция возвращает значение результатЕслиИстина, если же выражение есть ложь, то возвращается значение результатЕслиЛожь.
В прелыдущем примере выражением для проверки было
Format(Now, "а/р") = "а"
Поэтому если функция Format возвращает значение а, данное выражение есть Истина.
Если же она возвращает любое другое значение, включая р, то выражение есть Ложь. Затем VBA вычисляет результат функции Iif на основе того, является ли значение выражения истиной или ложью. Если это значение Истина, функция Iif возвращает до обеда, а если Ложь, то после обеда.
В VBA 6 были добавлены несколько функций, подобных функции Format, - Format Number, Format DateTime, Format Currency и Format Percent - для работы сданными соответствующих типов. Подобно оригинальной функции Format, каждая из этих функций-наследниц возвращает строку с форматированным представлением исходного значения. Ввиду того, что эти новые функции по умолчанию возвращают результаты, нужные вам чаще всего, эти функции могут оказаться в использовании удобнее, чем сама функция Format. Вкратце их работу можно описать следующим образом.
* FormatNumber(число,ЧислоЗнаковПослеЗапятой, ОтображатьНезначащийНуль, ИспользоватьСкобкиДляОтрицательныхЧисел, ГруппироватьРазряды). Возвращает значение числа- единственного обязательного аргумента- в виде форматированной строки. Если опустить необязательные аргументы, функция FormatNumber отформатирует число на основе установок по умолчанию, заданных на вкладке Числа окна контрольной панели Язык и стандарты Windows. В предположении, что языком Windows выбран русский, вы получите число вида 132 328,55. Необязательные аргументы функции FormatNumber позволяют изменить заданные по умолчанию значения для числа знаков после запятой, отображения незначащего нуля перед запятой для чисел, меньших 1, представления отрицательных чисел в скобках и отделения групп разрядов одной от другой (например, пробелами).
* Format DateTime (дата, формат). Конвертирует значение даты в форматированную строку. Если аргумент формат не указан, строка форматируется в соответствии с системными установками для краткого формата даты и длинного формата времени, заданными на вкладках Дата и Время панели управления Язык и стандарты Windows. Здесь аргумент формат является числом (а не строкой, как в функции Format), но его можно задавать, используя именованные константы вида vbLongDate или vbShort Time.
* Format Currency (число). Возвращает значение числа, отформатированного как денежное, в соответствии с текущими установками в панели управления. В остальном функция Format Currency работает подобно функции FormatNumber и имеет те же необязательные аргументы.
Format Percent (число). Умножает число на 100 и добавляет знак процентов (например, 0,05 превращается в 5,00%). Функция Format Percent имеет те же необязательные аргументы, что и функция FormatNumber. Чтобы не выводить знаки дробной части, задайте аргумент ЧислоЗнаковПослеЗапятой равным 0 (например, Format Percent ( .05, 0)).
Как упоминалось в главе 9, VBA автоматически конвертирует данные одних типов в другие "на лету". Такие автоматические преобразования, конечно, удобны, да и получаемые при этом результаты обычно соответствуют желаемым. Правда, при этом нужно обязательно подчеркнуть слово обычно.
Когда автоматическое преобразование вас не устраивает, VBA готов предложить массу функций для явного преобразования данных одних типов в другие. Эти функции можно использовать для того, чтобы
* быть уверенным, что VBA выполняет именно то преобразование, которое нужно;
* выполнить преобразования, которые не выполняются в VBA автоматически;
* сделать свой программный код яснее.
Для конвертирования данных в VBA предусмотрена целая группа функций - CBool, Cbyte, CCur и т.д. - своих для каждого из встроенных типов данных, за исключением Object. Например, в результате выполнения оператора boolMaybe = CBool (123) переменная bool Maybe будет содержать значение True (вообще любое число, не равное нулю, в результате даст True, наверное потому, что любое такое число ассоциируется с чем-то существующим).
Замечу, однако, что, кроме превращения самой операции конвертирования в явную, эти функции не делают ничего такого, что не может предложить VBA при автоматическом конвертировании. (Об особенностях функции СDec см. в главе 9.)
Функции Fix и intотбрасывают дробную часть любого заданного им числа, возвращая целое число. Но, в отличие от функций CInt и CLng, они не выполняют привычного округления - например, int(4 . 98 9) возвращает 4, а не 5.
Результаты этих двух функций отличаются только при обработке отрицательных чисел.
Тогда intвозвращает ближайшее к значению аргумента меньшее целое число, a Fix просто отбрасывает дробную часть аргумента.
Функции Hex и Oct преобразуют стандартные десятичные целые числа в строки, содержащие соответственно их шестнадцатеричные и восьмеричные эквиваленты.
Возможность явного конвертирования в обратном направлении в VBA не предусмотрена, но зато вы можете напечатать буквальные шестнадцатеричные или восьмеричные значения и позволить редактору Visual Basic превратить их в десятичные автоматически. При этом любой шестнадцатеричный или восьмеричный литерал должен предваряться специальным кодом: шестнадцатеричный – кодом &Н, а восьмеричный - кодом &О (это буква О, а не цифра 0). Например, в результате выполнения оператора intBas es = 10+&О12 + &НА значением переменной intBases будет число 30, как и должно быть (это очевидно).
Некоторые функции VBA конвертируют числа в строки. К таким функциям относятся следующие.
* CStr. Превращает данные любых типов (кроме типа Object ), включая числовые, в соответствующую им строку. Вывод форматируется в соответствии с установками заданными в панели управления Язык и стандарты Windows. Например, во Франции CStr ( 200.02) на выходе выдаст строку "200, 02". Здесь следует заметить, что хотя результирующая строка и соответствует региональным установкам, подаваемые на вход числовые данные должны быть представлены в формате, соответствующем английскому языку США.
* Str. Конвертирует число в строку, но всегда форматирует строку в соответствии со стандартом английского языка США с точкой в качестве десятичного разделителя.
* Функции конвертирования в числовые типы данных. Конвертируют строки в соответствующие числовые значения, но только тогда, когда все символы в строке распознаются как допустимые для чисел. В данном случае тоже все зависит от установок в панели управления. Например, в России CDbl ("200, 02р. ") в результате дает 200, 02; в США тот же оператор порождает ошибку, но CDbl ( "$200 . 02" ) прекрасно работает.
* Val. Конвертирует числа в строках в числовые значения, останавливаясь там, где встречается первый символ, недопустимый для чисел. Независимо от установок панели управления, распознает только цифры и десятичную точку (а не запятую, например). Однако игнорирует пробелы, символы табуляции и переходы на новую строку.
Так, выражение Val ("28 190.43 12 by 14 ") в результате даст 28190,4312.
Chr. Конвертирует числовой ANSI-код в соответствующий символ. Используйте эту функцию, когда в строку нужно поместить символ, который нельзя напечатать.
Asc. Примерно соответствует обратной к функции Chr - возвращает числовой код первого символа в строке.
Работа со строками
В VBA имеется довольно богатая коллекция операторов и функций для форматирования строк и извлечения тех их частей, которые вы сочтете особенно привлекательными. В табл. 11.3 я представил все относящиеся к строкам команды, которые мне удалось обнаружить.
Таблица 11.3. Операторы и функции для обработки строк
Не забывайте, что буквальные строковые значения (в отличие от переменных, содержащих строковые значения) должны заключаться в кавычки.
Оператор или функция
Тип
Выполняемые действия (для операторов) или возвращаемые значения (для функций)
Asc (строка)
Функция
Числовой код первого символа в строке
Chr (код_символа)
функция
Символ, соответствующий значению параметра код_символа
Filter ( массив_источник, эталон, включает, метод сравнения)
Функция (только в VBA6)

