Возвращает значение типа Variant ( String), которое содержит выражение, отформатированное в соответствии с указаниями, содержащимися в выражении формата.
Об Возникла проблема с использованием этой функции. Последний понедельник в некоторых годовых годах может быть возвращен в неделю 53, когда она должна быть неделей 1. Дополнительные сведения и временное решение можно найти в статье функции Format и datepart могут возвращать неверный номер недели для последнего месяца в году.
Format( выражение [ , формат ] [ , первый_день_недели ] [ , первая_неделя_года ] )
Функция Format имеет следующие аргументы:
Обязательный аргумент. Любое допустимое выражение.
Необязательный. Допустимое именованное или определяемое пользователем выражение формата.
Необязательный. Константа, задающая первый день недели.
Необязательный аргумент. Константа, задающая первую неделю года.
Аргумент Format может использовать разнообразные параметры, в зависимости от типа данных аргумента Expression . Дополнительные сведения см. в статьях, указанных в таблице ниже.
Аргумент первый_день_недели может принимать следующие значения:
Используются параметры API NLS.
Воскресенье (по умолчанию)
Аргумент первая_неделя_года может принимать следующие значения:
Используются параметры API NLS.
Начинается с недели, на которую приходится 1 января (по умолчанию).
Первой неделей считается та, которая содержит хотя бы четыре дня нового года.
Первой неделей считается первая полная неделя года.
Используйте стандартные именованные числовые форматы или создайте пользовательские числовые форматы.
Значения даты и времени
Используйте стандартные именованные форматы даты и времени или создайте пользовательские форматы даты и времени.
Серийные номера даты и времени
Используйте форматы даты и времени или числовые форматы.
Создайте пользовательские форматы строк.
Если вы попытаетесь отформатировать число без задания формата, функция Format будет работать аналогично функции Str, хотя и с поддержкой международных форматов. Однако положительные числа, отформатированные как строки с использованием функции Format, не будут включать начальный пробел, зарезервированный для знака значения; с другой стороны, в случае преобразования с помощью функции Str начальный пробел сохранится.
При форматировании нелокализованных числовых строк следует использовать определяемый пользователем числовой формат, чтобы обеспечить получение желаемых результатов.
Примечание: Если для свойства Calendar задано значение Gregorian, а для аргумента формат указано форматирование даты, предоставленное выражение должно иметь тип Gregorian. Если для свойства Calendar в Visual Basic задано значение Hijri, выражение должно иметь тип Hijri.
Если используется григорианский календарь, значение символов выражения формат не изменяется. Если используется календарь Хиджра, все символы формата даты (например, dddd, mmmm, yyyy) имеют то же значение, но применяются к календарю Хиджра. Символы формата остаются английскими; символы, отображаемые в текстовом виде (например, AM и PM), выводят строку (на английском или арабском языке), связанную с этим символом. Диапазон некоторых символов при использовании календаря Хиджра изменяется.
Отображает полное название месяца (у названий месяцев Хиджра нет сокращений).
Содержание
Примеры
Использование функции Format в выражении. Функцию Format можно использовать в любых выражениях. Можно, например, использовать ее в запросе в виде части псевдонима поля или в свойстве Данные текстового поля в форме или отчете. Ниже представлен пример выражения, которое можно использовать в свойстве отчета Фильтр, чтобы вывести только записи, относящиеся к прошлой неделе.
В этом примере в источнике записей отчета есть поле "Дата", содержащее дату изменения каждой конкретной записи и использующееся в отчете. Во время выполнения отчета результаты фильтруются и отображаются только те записи, в которых значение недели в поле "Дата" (Format([Дата],"ww")) равно прошлой неделе (Format(Now(),"ww")-1).
Использование функции Format в коде VBA
Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.
В данном примере показаны различные варианты использования функции Format для форматирования значений с помощью предварительно заданных форматов и форматов, определенных пользователем. Для разделителя даты ( /), разделителя времени ( 🙂 и литералов AM/ PM фактические отформатированные выходные данные, отображаемые системой, зависят от ее региональных параметров. В среде разработки для отображения времени и даты используется краткий формат времени и даты, заданный в региональных параметрах программы. При отображении в работающей программе применяется краткий формат даты и времени из региональных параметров системы, который может отличаться от региональных параметров программы. В этом примере используется локаль "Английский (США)".
MyTime и MyDate отображаются в среде разработки с использованием текущих системных параметров для краткого формата времени и даты.
Использование функции Format с пустыми строками
В Microsoft Access версии 2,0 и более ранних версиях можно использовать функцию Format , чтобы возвращать одно значение для пустая строка, а другое — для значения. Например, вы можете использовать выражение формата, например следующее, с функцией Format , чтобы вернуть соответствующее строковое значение из кода:
В Microsoft Access 97 и более поздних версиях необходимо отдельно проверить, не равно ли значение Null, а затем вернуть соответствующее значение с учетом результата. Например, можно использовать функцию IIf в выражении с функцией Format:
varX = IIf(IsNull(varStrX),"Null", Format(varStrX, "@;ZLS"))
Данное изменение применимо только тогда, когда функция Format используется для форматирования строк в зависимости от того, пустая ли это строка или строка со значением Null. Другие выражения форматирования, используемые с функцией Format, действуют так же, как в предыдущих версиях.
При преобразовании базы данных из Microsoft Access 2.0 или более ранней версии в Microsoft Access 2002 или более поздней версии необходимо изменить текст программы так, чтобы проверка для случая Null выполнялась отдельно.
Удаление ненужных символов
Зачастую строки в программе содержат ненужные символы пробелов в конце или в начале строки, которые необходимо удалить, т.к. посторонние начальные или конечные пробелы в строке могут вызвать "неполадки" в работе программы.
В VBA имеются три функции, предназначенные для удаления начальных и конечных пробелов из строки: LTrim, RTrim, Trim. Следует иметь ввиду, что эти функции на самом деле не изменяют исходную строку, а возвращают копию строки с удаленными лишними пробелами.
Определение длины строки
Длину строки, как правило, надо знать при форматировании сообщений для пользователя или при форматировании строковых данных, вводимых процедурой в рабочий лист Excel или документ Word. VBA для этих целей использует функцию Len. В приведенным ниже листинге между знаками круглых скобок и словом присутствует по два пробела.
Следует быть внимательными со строками фиксированной длины. Поскольку строка фиксированной длины имеет всегда одну и ту же длину, функция Len всегда возвращает объявленную длину строки, независимо от фактической длины строки. Например, если в строковой переменной фиксированной длины StrokeName, имеющей длину 15 символов, фактически находится слово "солнце", то функция Len(StrokeName) возвратит результат 15. Чтобы в таком случае узнать фактическую длину строки (в нашем случае — 6), необходимо использовать следующую комбинацию функций: Len(Trim(StrokeName)).
Сравнение и поиск строк
В VBA имеются две функции, помогающих сравнивать строки: StrComp, InStr.
Функция StrComp
StrComp (String1, String2 [, Compare])
String1, String2 — любые два строковых выражения, которые необходимо сравнивать.
Compare — необязательный аргумент, может быть любой из следующих предопределенных констант (если он опускается, то используется текущая установка Option Compare):
- vbBinaryCompare — бинарное сравнение двух строк;
- vbTextCompare — текстовое сравнение двух строк;
- vbDatabaseCompare — используется только в Microsoft Access.
При выполнении StrComp возвращается одно из следующих значений:
- -1, если String1 меньше String2;
- 0, если String1 и String2 равны;
- 1, если String1 больше String2.

В вышеприведенном листинге в текстовом режиме сравниваются две строки: "Строка по умолчанию" и " Строка по умолчанию". Результат сравнения = 1, т.е. "Строка по умолчанию" больше, чем " Строка по умолчанию".
Поэкспериментируйте с разнообразными строками для лучшего понимания работы функции StrComp.
Функция InStr
Функция InStr дает возможность определить, содержит ли одна строка другую строку.
StrComp ([Start, ] String1, String2 [, Compare])
String1, String2 — любые допустимые строковые выражения. Функция проверяет содержится ли String1 в String2.
Compare — необязательный аргумент, может быть любой из следующих предопределенных констант (если он опускается, то используется текущая установка Option Compare):
- vbBinaryCompare — бинарное сравнение двух строк;
- vbTextCompare — текстовое сравнение двух строк;
- vbDatabaseCompare — используется только в Microsoft Access.
Start — необязательный аргумент, является численным выражением и указывает положение символа в String1, с которого должна начинаться проверка.
InStr возвращает число, обозначающее положение символа в String1, где было обнаружено String2. Если InStr не находит String2 в String1, то возвращается 0. Если String1 (или String2) имеет значение Null, то функция также возвращает Null.
Разбиение строки
Иногда возникает необходимость разбиения строки на составляющие части. В VBA эту задачу решают три функции: Left, Right, Mid.
Функция Left
Left (String, Length)
String — любое допустимое строковое выражение.
Length — любое численное значение.
Функция возвращает копию String, начиная с первого символа и включая количество символов, заданных с помощью Length. Если Length является числом, большим, чем фактическая длина String, то возвращается все строковое выражение String.
Функция Right
Right (String, Length)
String — любое допустимое строковое выражение.
Length — любое численное значение.
Функция возвращает копию String, начиная с последнего символа и включая справа налево количество символов, заданных с помощью Length. Если Length является числом, большим, чем фактическая длина String, то возвращается все строковое выражение String. Функция Right всегда копирует символы от конца строки к ее началу.
Функция Mid
Mid (String, Start, [, Length])
String — любое допустимое строковое выражение.
Length, Start — любые численные значения.
Функция Mid возвращает копию String, начиная с положения символа в String, задаваемого с помощью аргумента Start . Необязательный аргумент Length определяет количество копируемых в Mid символов из String. Если Start содержит большее число, чем фактическая длина String, то возвращается пустая строка.
Символы, которые нельзя ввести с клавиатуры
Зачастую случается, что надо ввести какой-либо символ, для которого отсутствует клавиша на клавиатуре (например, символ копирайта). Другая ситуация — когда надо в строку включить служебный символ VBA (самый распространенный случай — включение двойных кавычек).
Чтобы включить в строку символы, которые невозможно ввести с клавиатуры, или которые имеют особое значение для VBA, используется функция Chr.
Charcode — любое численное выражение, являющееся допустимым кодом для набора символов, используемого компьютером. Должен быть целым числом от 0 до 255.
Функция Chr принимает код отдельного символа в качестве аргумента и возвращает строку, содержащую соответствующий этому коду символ. Данная функция использована в вышеприведенных листингах для перевода строки при выводе сообщения на экран Chr (13).
Поскольку символы, используемые для начала новой строки, являются очень важными при форматировании сообщений и других строковых данных, которыми манипулируют VBA-процедуры, имеется несколько предопределенных констант для этих символов, чтобы не было необходимости использовать функцию Chr:
- vbCr — символ возврата каретки. Эквивалент Chr(13)
- vbLf — символ смещения на одну строку. Эквивалент Chr(10)
- vbCrLf — символ возврата каретки+смещения на одну строку. Эквивалент Chr(13)+ Chr(10)
- vbTab — символ табуляции. Эквивалент Chr(9)
Для просмотра списка код-символ надо открыть справочную систему VBA и по запросу "character sets" будет представлена соответствующая таблица.
Форматирование значений данных
Очень часто формат данных на выходе программы по тем или иным причинам нас не совсем устраивает. Эту задачу решает функция Format.
VBA-функция Format идентична функции Format в Excel и использует те же символы-заполнители форматирования данных.
Format (Expression [, Format[, Firstdayofweek [, Firstweekofyear]]])
Expression — любое допустимое выражение (обязательный аргумент).
Format — допустимое выражение именованного или определенного пользователем формата.
Firstdayofweek — константа, которая определяет первый день недели.
Firstweekofyear — константа, которая определяет первую неделю года.
Чтобы использовать функцию Format, надо либо задать предопределенный формат, либо создать образ определенного формата, используя символы-заполнители.
Именованные форматы для использования с функцией Format
| Именованный формат | Действие |
| General Date | Форматирует информацию о дате и времени в последовательное число даты, используя установки формата даты и времени для данного компьютера. |
| Long Date | Форматирует в последовательной дате только часть, содержащую дату, используя установки компьютера для Long-формата даты. |
| Medium Date | Форматирует в последовательной дате только часть, содержащую дату, используя установки компьютера для Medium-формата даты. |
| Short Date | Форматирует в последовательной дате только часть, содержащую дату, используя установки компьютера для Short-формата даты. |
| Long Time | Форматирует в последовательной дате только часть, содержащую время, используя установки компьютера для Long-формата времени. |
| Medium Time | Форматирует в последовательной дате только часть, содержащую время, используя установки компьютера для Medium -формата времени. |
| Short Time | Форматирует в последовательной дате только часть, содержащую время, используя установки компьютера для Short -формата времени. |
| General Number | Форматирует число в строку без каких-либо особых символов. |
| Currency | Форматирует число с символом денежной единицы, разделителем тысяч и только двумя десятичными разрядами. |
| Fixed | Форматирует число так, чтобы всегда была, по крайней мере, одна цифра перед десятичным разделителем и, по крайней мере, две цифры после него. |
| Standart | Форматирует число с разделителем тысяч так, чтобы была, по крайней мере, одна цифра перед десятичным разделителем и, по крайней мере, две цифры после него. |
| Percent | Форматирует число как процентное отношение, умножая его на 100 и добавляя символ процента. |
| Scientific | Форматирует число в обычный экспоненциальный формат. |
| Yes/No | Возвращается строка "Да" если форматируемое число ненулевое, иначе — "Нет". |
| True/False | Возвращается строка "Истина" если форматируемое число ненулевое, иначе — "Ложь". |
| On/Off | Возвращается строка "Вкл" если форматируемое число ненулевое, иначе — "Выкл". |
Символы-заполнители для создания пользовательских форматов
| Символ-заполнитель | Действие (в качестве примера используется число 1234.45) |
| 0 | Цифровой символ, отображает цифру, если таковая находится в этой позиции, или 0, если — нет. Можно использовать символ 0 для отображения начальных нулей для целых чисел и конечных нулей в десятичных дробях: 00000.000 отображает 01234.450 |
| # | Цифровой символ, отображает цифру, если таковая находится в этой позиции, иначе — не отображает ничего. Символ-заполнитель # эквивалентен 0, кроме того, что начальные и конечные нули не отображаются: #####.### отображает 1234.45 |
| $ | Отображает знак доллара: $###,###.00 отображает $1 234,45 |
| . | Десятичный символ-заполнитель, отображает десятичную точку в обозначенной позиции в строке символов-заполнителей 0: #.##.## отображает 1234.45 |
| % | Символ процента, умножает значение на 100 и добавляет знак процента в позицию, указанную символами-заполнителями 0:#.#0.00% отображает число 0.12345 как 12.35% (происходит округление) |
| , | Разделитель тысяч, добавляет запятые как разделители тысяч в строках символов-заполнителей 0 и #: ###,###,###.00 отображает 1 234,45 |
| E- e- | Отображает значение в экспоненциальном формате со знаком порядка только для отрицательных значений: #.####E-00 отображает 1.23445Е03 |
| E+ e+ | Отображает значение в экспоненциальном формате со знаком порядка как для отрицательных, так и для положительных значений: #.####E+00 отображает 1.23445Е+03 |
| / | Отделяет день, месяц и год для форматирования значений дат. |
| m | Указывает, как отображать месяцы в датах: m отображает 1, mm — 01, mmm — янв, mmmm — Январь |
| d | Указывает, как отображать дни в датах: d отображает 1, dd — 01, ddd — Вс, dddd — воскресенье |
| y | Отображает день года как число от 1 до 366 |
| yy | Указывает, как отображать годы в датах: yy — 66, yyyy — 1966 |
| q | Отображает квартал года как число от 1 до 4 |
| w | Отображает день недели как число (1 — воскресенье) |
| ww | Отображает неделю года как число от 1 до 54 |
| : | Отделяет часы, минуты и секунды в значениях формата времени: hh:mm:ss — 01:01:01, h:m:s — 1:1:1 |
| h | Указывает, как отображать часы: hh — 01, h — 1 |
| m | Указывает, как отображать минуты: mm — 01, m — 1 |
| s | Указывает, как отображать секунды: ss — 01, s — 1 |
| AM/PM | Отображает время в 12-часовом формате времени с добавленными АМ или РМ |
| @ | Символьный заполнитель, отображает пробел, если не имеется соответствующего символа в форматируемой строке. |
| Отображает все символы в верхнем регистре. | |
| > | Отображает все символы в нижнем регистре. |
В начало страницы
В начало страницы
Description
The VBA Format function applies a specified format to an expression and returns the result as a string.
The syntax of the function is:
Where the function arguments are:
| Expression | — |
The expression that you want to format.
An optional argument specifying the format that is to be applied to the Expression .
This can be a user-defined format or one of the predefined named formats listed below:
Predefined Date Formats:
If a date only, no time is displayed; If a time only, no date is displayed.
Predefined Number Formats:
| Format | Description | |
|---|---|---|
| General Number | — | Displays a number as it is entered. |
| Currency | — | Displays a number with a currency symbol, using the thousand separator and decimal places, as defined in your system’s currency setting. |
| Euro | — | Displays a number as a currency, with the euro currency symbol. |
| Fixed | — | Displays at least one digit to the left of the decimal place and follows the system settings for the number of decimal places to the right of the decimal place. |
| Standard | — | Displays the thousand separator and follows the standard system settings for the number of digits displayed at either side of the decimal place. |
| Percent | — | Displays a number multiplied by 100 and followed by the percent symbol; The format follows the standard system settings for the number of digits displayed at either side of the decimal place. |
| Scientific | — | Displays a number using scientific notation. |
| Yes/No | — | Displays No if the number is equal to zero or Yes otherwise. |
| True/False | — | Displays False if the number is equal to zero or True otherwise. |
| On/Off | — | Displays Off if the number is equal to zero or On otherwise. |
If the [Format] argument is omitted, the function uses the system ‘General’ format for the Expression data type.
An optional FirstDayOfWeek enumeration value, specifying the weekday that should be used as the first day of the week.
This can have any of the following values:
If omitted, the [FirstDayOfWeek] argument uses the default value vbSunday.
An optional FirstWeekOfYear enumeration value, specifying the week that should be used as the first week of the year.
This can have any of the following values:
If omitted, the [FirstWeekOfYear] argument uses the default value vbFirstJan1.
VBA Format Function Examples
Example 1 — Format VBA Dates and Times
The following VBA code shows how the VBA Format function can be used to format the date and time 12/31/2015 12:00:00 in five different ways.
dt5 = Format( #12/31/2015 12:00:00 PM#, "dddd mm/dd/yyyy hh:mm:ss" )
‘ dt5 is now equal to the String "Thursday 12/31/2015 12:00:00".
Note that, in the above examples:
- In the first call to the Format function, the [Format] argument is omitted. Therefore, the current system default date/time format is used.
- The second and third calls to the Format function use the predefined formats "Long Date" and "Medium Time". These format definitions will vary, according to your system date/time settings.
- The last two calls to the Format function have been supplied with user-defined formats.
Example 2 — Format VBA Numbers and Currencies
In the following VBA code, the VBA Format function is used to format the numeric values 50000 and 0.88 in different ways.
str5 = Format( 0.88, "0.0" )
‘ str5 is now equal to the String "0.9".
Note that, in the above examples:
- In the first call to the Format function, the [Format] argument is omitted. Therefore the current system default number format is used.
- The second and third calls to the Format function use the predefined formats "Currency" and "Percentage". These format definitions may vary, according to your system settings.
- The last two calls to the Format function have been supplied with user-defined formats.
Example 3 — Format VBA Strings
The following example shows the VBA Format function used with two different format options for Strings.
str2 = Format( "123456789", "@@@-@@@-@@@" )
‘ str2 is now equal to the String "123-456-789".
In the above VBA code:
- In the first call to the Format function, the ">" character forces the supplied text to be formatted in upper case.
- In the second call to the Format function, the "@" character represents a displayed character and the "-" character is text to be inserted in the specified positions of the String.





