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

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

Жанры

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

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

Шрифт:

В упрощенной форме синтаксис функции Format выглядит так (здесь опущены два необязательных и редко используемых аргумента, относящихся к датам, - о них вы можете узнать из справки VBA):

Format(выражение,"формат")

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

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

Чтобы использовать функцию Format, присвойте ее переменной либо свойствам Value или Caption элемента управления в форме. Например, оператор

lblDateMessage.Caption = "Сегодня " & _

Format(Now, "Long Date")

отображает текст "Сегодня 19 март 2001 г."

в виде текста надписи элемента управления lblDateMessage (в предположении, что сегодня 19 марта 2001 года).

Использование встроенных форматов для функции Format

В табл. 11.2 приводятся именованные встроенные форматы для данных различных типов в VBA. Используйте их как аргумент в функции Format. He забудьте при этом заключить в кавычки имя выбранного вами формата (из первого столбца таблицы).

Таблица 11.2. Именованные форматы для использования с функцией Format

Имя формата

Описание вывода

Пример (соответствует установке языка Русский в панели управления)

Числовой

General Number

Число без выделения разрядов тысяч

2001,5599

Currency

Число с выделением разрядов тысяч и с двумя знаками после десятичного разделителя, а также с символом денежной единицы

2 001,56р.

Fixed

Как минимум один знак слева и два знака справа от десятичного разделителя (без выделения разрядов тысяч)

3390,10

Standard

Число с выделением разрядов тысяч и как 1 минимум одним знаком слева и двумя знаками справа от десятичного разделителя

323,45

Percent

Число, умноженное на 100, с двумя знаками справа от десятичного разделителя и знаком процентов (%) справа

12,54%

Scientific

Число в стандартном виде для научных расчетов

1,23Е+02

Логический

Yes/No

Нет, если значение равно 0, иначе Да

Да

True/False

Ложь, если значение равно 0, иначе Истина

Истина

On/Off

Выкл, если значение равно 0, иначе Вкл

Вкл

Дата/время

General Date

Дата и/или время, в зависимости от значения, представленного в соответствии с установками в панели управления

15.03.9817:27:45

Long Date

Дата в виде, заданном в панели управления для полного формата даты

15 Март 2001 г.

Medium Date

Дата в виде, заданном в панели для среднего формата даты

управления 15-мар-01

Short Date

Дата в виде, заданном в панели управления для краткого формата даты

15.03.01

Long Time

Время (часы, минуты и секунды) в виде, заданном в панели управления для полного формата времени

17:27:45

Medium Time

Время (часы и минуты) в 12-часовом формате с метками до/после полудня, заданными в панели управления

05:27

Short Time

Время (часы и минуты) в 24-часовом формате

17:27

Можно создать свои собственные форматы, собрав их из символов, имеющих специальные

значения для аргумента формат. Например, чтобы отобразить строки текста символами верхнего или нижнего регистров, используйте функцию Format с аргументами ">" или "<" соответственно. За неимением места я не могу описывать все эти специальные символы- вы найдете их самостоятельно, открыв сначала раздел Format Function (функция Format ) в файле справки VBA, а затем щелкнув на ссылке See Also (см. также) и просмотрев разделы User-defined Formats (пользовательские форматы). Но чтобы не совсем вас разочаровывать, я привожу следующий пример с парой пользовательских форматов в действии. Кроме того, этот же пример иллюстрирует использование еще одной встроенной функции VBA - Iif:

MsgBox "Сейчас " & Format(Now, "h:nn") & _

". Это время " & Iif(Format(Now, "a/p") = "a", _

"до обеда.", "после обеда.")

Если вы выполните этот программный код до обеда, оператор отобразит на экране строку типа "Сейчас 9:07. Это время до обеда". После обеда вы получите нечто похожее на сообщение, показанное на рис. 11.1. (Кстати, функция MsgBox обсуждается ниже в этой же главе в разделе "Отображение окон сообщений".)

Рис. 11.1. Окно сообщения

Теперь объяснения. В первой функции Format аргументом формат является "h:nn".

Символ h соответствует стандарту отображения часа одной цифрой, когда имеется в виду время до 10:00. После двоеточия пп задает отображение минут с незначащим нулем, если прошло меньше 10 минут после начала часа.

Вторая из используемых функций 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 и имеет те же необязательные аргументы.

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

Часовая башня

Щерба Наталья Васильевна
3. Часодеи
Фантастика:
фэнтези
9.43
рейтинг книги
Часовая башня

Попаданка в Измену или замуж за дракона

Жарова Анита
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Попаданка в Измену или замуж за дракона

На границе империй. Том 9. Часть 3

INDIGO
16. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 3

Жена на пробу, или Хозяйка проклятого замка

Васина Илана
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Жена на пробу, или Хозяйка проклятого замка

Ваше Сиятельство

Моури Эрли
1. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ваше Сиятельство

Восход. Солнцев. Книга I

Скабер Артемий
1. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга I

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Надуй щеки!

Вишневский Сергей Викторович
1. Чеболь за партой
Фантастика:
попаданцы
дорама
5.00
рейтинг книги
Надуй щеки!

Случайная свадьба (+ Бонус)

Тоцка Тала
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Случайная свадьба (+ Бонус)

Газлайтер. Том 5

Володин Григорий
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 5

Мастер Разума III

Кронос Александр
3. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.25
рейтинг книги
Мастер Разума III

Наследник 2

Шимохин Дмитрий
2. Старицкий
Фантастика:
попаданцы
альтернативная история
фэнтези
5.75
рейтинг книги
Наследник 2

Неучтенный. Дилогия

Муравьёв Константин Николаевич
Неучтенный
Фантастика:
боевая фантастика
попаданцы
7.98
рейтинг книги
Неучтенный. Дилогия

Светлая тьма. Советник

Шмаков Алексей Семенович
6. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Светлая тьма. Советник