Форматирование значений данных
Хотя VBA может автоматически преобразовывать любой тип данных в строку для отображения с помощью функции MsgBox или для вставки в рабочий лист Excel, формат данных, который выбирает VBA, может не совпадать с желаемым. При преобразовании числа в строку VBA не добавляет в строку разделитель тысяч, символы доллара или другое числовое форматирование. Кроме того, если число очень большое или очень малое, VBA создает строку, представляющую это число в экспоненциальном формате. При преобразовании дат VBA всегда использует короткий формат даты и времени, используемый операционной системой компьютера, и всегда отображает и дату, и время.
Для получения почти любого формата дат при преобразовании чисел или дат в строки можно использовать функцию Format; можно даже использовать функцию Format для форматирования строковых данных в соответствии с определенным шаблоном. Можно также создавать пользовательские экранные форматы, если вам необходимо, чтобы данные появлялись в каком-либо особом формате. Синтаксис оператора Format:
Format(Expression [, Format[, Firstdayofweek [, Firstweekofyear]]])
Expression – любое допустимое выражение (обязательный); Format – допустимое выражение именованного или определенного пользователем формата (необязательный); Firstdayofweek – константа, которая определяет первый день недели (необязательный); Firstweekofyear – константа, которая определяет первую неделю года (необязательный).
Для аргументов Firstdayofweek и Firstweekofyear в VBA имеются именованные константы, о которых можно узнать из справочной системы VBA в разделе DateConstants.
Чтобы использовать функцию Format, можно либо задать предопределенный формат (называемый именованным форматом (namedformat), либо создать образ определенного формата, используя комбинации особой группы символов, называемых символами заполнителями (placeholders). Если вам необходимо создавать пользовательские форматы для чисел, дат или времени, нужно создать строку, содержащую символы-заполнители, для задания образа форматирования, который должна будет использовать функция Formatпри преобразовании значений в строку (табл. 19). Кроме того, в табл. 19 используется как пример численное значение 1234,5.
Таблица 19 – Символы-заполнители для создания пользовательских форматов
Символзаполнитель | Действие |
Цифровой символ, отображает цифру, если таковая находится в этой позиции, или 0, если – нет. Можно использовать символ 0 для отображения начальных нулей для целых чисел и конечных нулей в десятичных дробях; 00000.000отображает 00124,500 | |
# | Цифровой символ, отображает цифру, если таковая находится в этой позиции, иначе — не отображает ничего. Символ-заполнитель # эквивалентен 0, кроме того, что начальные и конечные нули не отображаются; #####.### отображает 1234,5 |
$ | Отображает знак доллара; $###,###.00 отображает $1 234,50 |
. | Десятичный символ-заполнитель, отображает десятичную точку в обозначенной позиции в строке символов-заполнителей 0; #.##.## отображает 1234,5 |
% | Символ процента, умножает значение на 100 и добавляет знак процента в позицию, указанную символами-заполнителями 0; #0.00%отображает число 0.12345 как 12,35% (12,345 округляется до 12,35) |
, (запятая) | Разделитель тысяч, добавляет запятые как разделители тысяч в строках символов-заполнителей 0 и #; ###,###,###.00 отображает 1 234,50 |
Е-, е- | Отображает значения в экспоненциальном формате со знаком порядка только для отрицательных значений; #.####Е–00отображает 1,2345Е03; 0,12345 отображается как 1,2345Е-01 |
Е+, е+ | Отображает значения в экспоненциальном формате со знаком порядка для положительных и отрицательных значений; #.####Е+00 отображает 1,2345Е+03 |
/ | Отделяет день, месяц и год для форматирования значений дат. mm/dd/yy отображает 06/06/97. Символы "/" можно заменять на символы дефиса для отображения как 06-06-97 |
m | Указывает, как отображать месяцы в датах; m отображает 2, mm – 02, mmm– фев, mmmm – Февраль |
d | Указывает, как отображать дни в датах; d отображает 1, ddотображает 01, ddd – Пт, dddd – пятница |
y | Отображает день года как число от 1 до 366 |
yy | Указывает, как отображать годы в датах; yy отображает 99, уууу – 1999 |
q | Отображает квартал года как число от 1 до 4 |
w | Отображает день недели как число (1 – это воскресенье) |
ww | Отображает неделю года как число от 1 до 54 |
Символзаполнитель | Действие |
: (двоеточие) | Отделяет часы, минуты и секунды в значениях формата времени; hh:mm:ss отображает 02:02:02 |
h | Указывает, как отображать часы; для значения времени 02:01:38 hотображает 2, hh отображает 02 |
n | Минутный символ-заполнитель для времени; для значения времени 02:01:08 nотображает 1, а nn отображает 01 |
s | Секундный символ-заполнитель для времени; для значения времени 02:01:08 sотображает 8, и ss отображает 08 |
АМ/РМ | Отображает время в 12-часовом формате времени с добавленными AM и РМ; h:nnАМ/РМ отображает 4:00 РМ. Альтернативные форматы включают am/pm, A/P и а/р |
@ | Символьный заполнитель, отображает пробел, если не имеется соответствующего символа в форматируемой строке (порядок заполнения по умолчанию — справа налево) |
> | Отображает все символы в верхнем регистре |
< | Отображает все символы в нижнем регистре |