Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Форматирование чисел
Для форматирования чисел предназначены следующие функции:
FormatNumber()
— возвращает строковое представление числа в соответствии с заданным форматом. Синтаксис функции:
FormatNumber(<Значение>[, NumDigitsAfterDecimal[,
IncludeLeadingDigit[, UseParensForNegativeNumbers[,
GroupDigits]]]])
Пример:
Debug.Print FormatNumber(1.45787421, 5) ' 1,45787
Debug.Print FormatNumber(1.45787421, NumDigitsAfterDecimal:=5)
' 1,45787
FormatPercent()
— возвращает строковое представление числа в виде процентов в соответствии с заданным форматом. Значение умножается на100
и в конец добавляется символ процента (%
). Формат функции:
FormatPercent(<Значение>[, NumDigitsAfterDecimal[,
IncludeLeadingDigit[, UseParensForNegativeNumbers[,
GroupDigits]]]])
Пример:
Debug.Print FormatPercent(1.45787421) ' 145,79%
Debug.Print FormatPercent(1.45787421, 5) ' 145,78742%
FormatCurrency()
— возвращает строковое представление числа в денежном формате. В конце добавляется символ валюты. Формат функции:
FormatCurrency(<Значение>[, NumDigitsAfterDecimal[,
IncludeLeadingDigit[, UseParensForNegativeNumbers[,
GroupDigits]]]])
Пример:
Debug.Print FormatCurrency(1.45787421) ' 1,46р.
Debug.Print FormatCurrency(1.45787421, 2) ' 1,46р.
Параметры в функциях FormatNumber()
, FormatPercent()
и FormatCurrency()
имеют следующий смысл:
NumDigitsAfterDecimal
— задает количество цифр после десятичной точки. По умолчанию параметр имеет значение-1
, которое означает, что используются региональные настройки. Пример:
Debug.Print FormatNumber(1.45787421, 2) ' 1,46
Debug.Print FormatNumber(1.45787421, 5) ' 1,45787
IncludeLeadingDigit
— определяет нужно ли отображать нулевую целую часть числа. Если указана константаvbTrue
(или число-1
), то нуль отображается, еслиvbFalse
(или число0
) — то нет. По умолчанию параметр имеет значение константыvbUseDefault
(-2
), которое означает, что будут использоваться региональные настройки. Пример:
Debug.Print FormatNumber(0.45787421, , vbTrue) ' 0,46
Debug.Print FormatNumber(0.45787421, , vbFalse) ' ,46
UseParensForNegativeNumbers
— если указана константаvbTrue
(или число-1
), то отрицательные значение будут отображаться внутри круглых скобок без знака числа, еслиvbFalse
(или число0
) — то нет. По умолчанию параметр имеет значение константыvbUseDefault
(-2
), которое означает, что будут использоваться региональные настройки. Пример:
Debug.Print FormatNumber(-1.457, , , vbTrue) ' (1,46)
Debug.Print FormatNumber(-1.457, , , vbFalse) ' -1,46
Debug.Print FormatNumber(-1.457, , , vbUseDefault) ' -1,46
GroupDigits
— если указана константаvbTrue
(или число-1
), то тысячные группы будут разделяться через символ, указанный в региональных настройках (например, через пробел), еслиvbFalse
(или число0
) — то нет. По умолчанию параметр имеет значение константыvbUseDefault
(-2
), которое означает, что будут использоваться региональные настройки. Пример:
Debug.Print FormatNumber(1458457, , , , vbTrue) ' 1 458 457,00
Debug.Print FormatNumber(1458457, , , , vbFalse) ' 1458457,00
Функция Format()
Форматировать числа позволяет также функция Format()
. Помимо чисел можно отформатировать и вывод значения даты и времени, а также строк. Формат функции:
Format(<Значение>[, Format[, FirstDayOfWeek[, FirstWeekOfYear]]])
Необязательный параметр Format
задает выражение формата, параметр FirstDayOfWeek
— первый день недели (константы vbMonday
, vbTuesday
, vbWednesday
, vbThursday
, vbFriday
, vbSaturday
, vbSunday
(значение по умолчанию) и vbUseSystemDayOfWeek
), а параметр FirstWeekOfYear
— первую неделю года (константы vbFirstJan1
(значение по умолчанию), vbFirstFullWeek
, vbFirstFourDays
и vbUseSystem
).
В параметре Format
указываются следующие значения в виде строки:
General Number
— отображает число без разделителя тысячных групп:
Debug.Print Format(1458457.5687, "General Number")
' 1458457,5687
Fixed
— выводит число без разделителя тысячных групп с двумя цифрами после десятичной точки:
Debug.Print Format(1458457.5687, "Fixed") ' 1458457,57
Standard
— отображает число с разделителями тысячных групп и двумя цифрами после десятичной точки:
Debug.Print Format(1458457.5687, "Standard") ' 1 458 457,57
Percent
— возвращает строковое представление числа в виде процентов. Значение умножается на100
и в конец добавляется символ процента (%
). Число отображается без разделителя тысячных групп с двумя цифрами после десятичной точки:
Debug.Print Format(1458457.5687, "Percent")
' 145845756,87%
Currency
— денежный формат. Число отображается с разделителями тысячных групп, двумя цифрами после десятичной точки и символа валюты в зависимости от региональных настроек:
Debug.Print Format(1458457.5687, "Currency")
' 1 458 457,57р.
Scientific
— формат с плавающей десятичной точкой:
Debug.Print Format(1458457.5687, "Scientific")
' 1,46E+06
Yes/No
— отображает значениеНет
, если число равно0
, иДа
— в противном случае:
Debug.Print Format(0, "Yes/No") ' Нет
Debug.Print Format(1458457.5687, "Yes/No") ' Да
True/False
— выводит значениеЛожь
, если число равно0
, иИстина
— в противном случае:
Debug.Print Format(0, "True/False") ' Ложь
Debug.Print Format(1458457.5687, "True/False") ' Истина
On/Off
— отображает значениеВыкл
, если число равно0
, иВкл
— в противном случае:
Debug.Print Format(0, "On/Off") ' Выкл
Debug.Print Format(1458457.5687, "On/Off") ' Вкл
General Date
— выводит дату и/или время в соответствии с региональными настройками:
Dim d As Date, dt As Date
d = #9/6/2012#
dt = #9/6/2012 10:48:12 PM#
Debug.Print Format(d, "General Date") ' 06.09.2012
Debug.Print Format(dt, "General Date") ' 06.09.2012 22:48:12
Long Date
— отображает дату в соответствии с полным форматом:
Debug.Print Format(d, "Long Date") ' 6 Сентябрь 2012 г.
Debug.Print Format(dt, "Long Date") ' 6 Сентябрь 2012 г.
Medium Date
— выводит дату в соответствии со средним форматом:
Debug.Print Format(d, "Medium Date") ' 06-сен-12
Debug.Print Format(dt, "Medium Date") ' 06-сен-12
Short Date
— отображает дату в соответствии с сокращенным форматом:
Debug.Print Format(d, "Short Date") ' 06.09.2012
Debug.Print Format(dt, "Short Date") ' 06.09.2012
Long Time
— выводит часы, минуты и секунды в соответствии с полным форматом:
Debug.Print Format(d, "Long Time") ' 0:00:00
Debug.Print Format(dt, "Long Time") ' 22:48:12
Medium Time
— отображает часы и минуты в 12-часовом формате:
Debug.Print Format(d, "Medium Time") ' 12:00
Debug.Print Format(dt, "Medium Time") ' 10:48
Short Time
— выводит часы и минуты в 24-часовом формате:
Debug.Print Format(d, "Short Time") ' 00:00
Debug.Print Format(dt, "Short Time") ' 22:48
В параметре Format
можно также указать шаблон с пользовательским форматом. В этом случае в строке используются следующие специальные символы:
0
— отображает цифру или нуль, если цифры нет:
Debug.Print Format(1458457.5687, "00000000") ' 01458458
#
— отображает цифру или ничего, если цифры нет:
Debug.Print Format(1458457.5687, "########") ' 1458458
.
(точка) — резервирует позицию десятичной точки:
Debug.Print Format(1458457.5687, "########.00") ' 1458457,57
,
(запятая) — резервирует позицию разделителя тысячных групп:
Debug.Print Format(1458457.5687, "##,###,###.00")
' 1 458 457,57
%
— значение умножается на100
и в позицию символа-заполнителя добавляется символ процента (%
):
Debug.Print Format(1458457.5687, "##,###,###,###.00%")
' 145 845 756,87%
E-
иe-
— отображение числа в научном формате. Знак порядка отображается только для отрицательных значений:
Debug.Print Format(1458457.5687, "###.##E-00") ' 145,85E04
Debug.Print Format(0.5687, "###.##E-00") ' 568,7E-03
E+
иe+
— отображение числа в научном формате. Знак порядка отображается в любом случае:
Debug.Print Format(1458457.5687, "###.##E+00") ' 145,85E+04
Debug.Print Format(0.5687, "###.##E+00") ' 568,7E-03
yy
— год из двух цифр (от"00"
до"99"
);yyyy
— год из четырех цифр (например,"2012"
);m
— номер месяца без предваряющего нуля (от"1"
до"12"
). Если перед спецсимволомm
стоит спецсимволh
илиhh
, то выводятся минуты без предваряющего нуля:
Dim d As Date, dt As Date
d = #9/6/2012#
dt = #9/6/2012 10:08:12 PM#
Debug.Print Format(dt, "m") ' 9 (месяц)
Debug.Print Format(dt, "h m") ' 22 8 (часы и минуты)
mm
— номер месяца с предваряющим нулем (от"01"
до"12"
). Если перед спецсимволомmm
стоит спецсимволh
илиhh
, то выводятся минуты с предваряющим нулем:
Debug.Print Format(dt, "mm") ' 09 (месяц)
Debug.Print Format(dt, "h mm") ' 22 08 (часы и минуты)
mmm
— аббревиатура месяца в зависимости от настроек локали (например,"сен"
для сентября);mmmm
— название месяца в зависимости от настроек локали (например,"Сентябрь"
);d
— номер дня в месяце без предваряющего нуля (от"1"
до"31"
);dd
— номер дня в месяце с предваряющим нулем (от"01"
до"31"
);y
— номер дня с начала года (от"1"
до"366"
);q
— номер квартала (от"1"
до"4"
);ww
— номер недели в году (от"1"
до"54"
);w
— номер дня недели ("1"
— для воскресенья,"7"
— для субботы);ddd
— аббревиатура дня недели в зависимости от настроек локали (например,"Чт"
для четверга);dddd
— название дня недели в зависимости от региональных настроек (например,"четверг"
);h
— часы без предваряющего нуля (от"0"
до"23"
);hh
— часы с предваряющим нулем (от"00"
до"23"
);n
— минуты без предваряющего нуля (от"0"
до"59"
);nn
— минуты с предваряющим нулем (от"00"
до"59"
);s
— секунды без предваряющего нуля (от"0"
до"59"
);ss
— секунды с предваряющим нулем (от"00"
до"59"
);ddddd
— отображает дату в соответствии с сокращенным форматом:
Debug.Print Format(dt, "ddddd") ' 06.09.2012
dddddd
— отображает дату в соответствии с полным форматом:
Debug.Print Format(dt, "dddddd") ' 6 Сентябрь 2012 г.
ttttt
— отображает время:
Debug.Print Format(dt, "ttttt") ' 22:08:12
c
— отображает дату и время в соответствии с сокращенным форматом:
Debug.Print Format(dt, "c") ' 06.09.2012 22:08:12
/
— символ-разделитель для даты в зависимости от региональных настроек:
Debug.Print Format(dt, "dd/mm/yyyy") ' 06.09.2012
:
— символ-разделитель для времени в зависимости от региональных настроек:
Debug.Print Format(dt, "hh:mm:ss") ' 22:08:12
Debug.Print Format(dt, "hh:nn:ss") ' 22:08:12
@
— символ или пробел, если символа нет. Если символов не хватает, то по умолчанию (если не указан спецсимвол!
) строка выравнивается по правому краю. Пример:
Debug.Print "'" & Format("Строка", "@@@@@@@@@@@@") & "'"
' ' Строка'
Debug.Print Format("Строка", "@ @ @ @ @ @") ' С т р о к а
!
— задает выравнивание по левому краю:
Debug.Print "'" & Format("Строка", "!@@@@@@@@@@@@") & "'"
' 'Строка '
&
— символ или ничего, если символа нет:
Debug.Print "'" & Format("Строка", "&&&&&&&&&&&&") & "'"
' 'Строка'
<
— отображает все буквы в нижнем регистре:
Debug.Print Format("Строка", "<") ' строка
>
— отображает все буквы в верхнем регистре:
Debug.Print Format("Строка", ">") ' СТРОКА
Шаблон с пользовательским форматом может содержать не только специальные символы, но и обычные символы. Если необходимо отобразить специальный символ как обычный, то перед символом следует указать защитный слеш (\
) или заключить текстовый фрагмент в кавычки. Так как кавычки обрамляют строку, нужно заключить фрагмент в удвоенные кавычки, а не в одинарные. Пример:
Dim dt As Date
dt = #9/6/2012 10:08:12 PM#
Debug.Print Format(dt, "\h\h\:\m\m\:\s\s = hh:mm:ss")
' hh:mm:ss = 22:08:12
Debug.Print Format(dt, """hh:mm:ss"" = hh:mm:ss")
' hh:mm:ss = 22:08:12
Если нужно вывести защитный слеш (\
), то его следует удвоить:
Debug.Print Format(dt, "\\hh:mm:ss\\") ' \22:08:12\
При форматировании чисел шаблон может содержать от одной до четырех секций, разделяемых с помощью точки с запятой (;
):
- одна секция только — шаблон относится ко всему значению;
- две секции — первая секция задает шаблон для положительных значений и нуля, а вторая секция — для отрицательных значений:
Debug.Print Format(145.5687, "###.00;-###.0") ' 145,57
Debug.Print Format(-145.5687, "###.00;-###.0") ' -145,6
Debug.Print Format(0, "###.00;-###.0") ' ,00
- три секции — первая секция задает шаблон для положительных значений, вторая секция — для отрицательных значений, а третья секция — для нуля:
Debug.Print Format(145.5687, "###.00;-###.0;0") ' 145,57
Debug.Print Format(-145.5687, "###.00;-###.0;0") ' -145,6
Debug.Print Format(0, "###.00;-###.0;0") ' 0
- четыре секции — первая секция задает шаблон для положительных значений, вторая секция — для отрицательных значений, третья секция — для нуля, а четвертая секция — для значения
Null
:
Debug.Print Format(Null, "###.00;-###.0;0;""Null""") ' Null
При форматировании строки шаблон может содержать от одной до двух секций, разделяемых с помощью точки с запятой (;
):
- одна секция только — шаблон относится ко всей строке;
- две секции — первая секция задает шаблон для строки, а вторая секция — для значения
Null
и пустой строки:
Debug.Print Format("Строка", "@@@@@@@@@@@@;""Null""")
' Строка
Debug.Print Format(Null, "@@@@@@@@@@@@;""Null""") ' Null
Debug.Print Format("", "@@@@@@@@@@@@;""Null""") ' Null
Функция Format()
возвращает значение типа Variant
(String)
. Чтобы получить значение типа String
следует использовать функцию Format$()
, имеющую тот же самый формат. Пример:
Debug.Print Format$("СТРОКА", "<") ' строка
Финансовые функции
Язык VBA содержит много встроенных функций, предназначенных для выполнения финансовых операций. Например, функции DDB()
, SLN()
и SYD()
позволяют вычислить величину амортизации имущества различными способами. Все финансовые функции являются специфическими и не представляют особого интереса для большинства программистов, поэтому мы не будем рассматривать их в этой книге. За подробной информацией по финансовым функциям обращайтесь к документации.
Помощь сайту
Yandex-деньги: 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов