The Format function converts a value to a text string and gives you
control over the string's appearance. For example, you can specify the number
of decimal places for a numeric value, leading or trailing zeros, currency
formats, and portions of the date. The syntax is:
Syntax
Format(expression [,format [,firstdayofweek
[,firstweekofyear]]])
expression
Any valid expression
format
A valid named or user-defined
format expression
firstdayofweek
A constant that specifies the
first day of the week
firstweekofyear
A constant that specifies the
first week of the year
The firstdayofweek
argument has these settings:
Constant
|
Value
|
Description
|
vbUseSystem
|
0
|
Use NLS API setting.
|
vbSunday
|
1
|
Sunday (default)
|
vbMonday
|
2
|
Monday
|
vbTuesday
|
3
|
Tuesday
|
vbWednesday
|
4
|
Wednesday
|
vbThursday
|
5
|
Thursday
|
vbFriday
|
6
|
Friday
|
vbSaturday
|
7
|
Saturday
|
The firstweekofyear
argument has these settings:
Constant
|
Value
|
Description
|
vbUseSystem
|
0
|
Use NLS API setting.
|
vbFirstJan1
|
1
|
Start with week in which January 1 occurs (default).
|
vbFirstFourDays
|
2
|
Start with the first week that has at least four days in
the year.
|
vbFirstFullWeek
|
3
|
Start with the first full week of the year.
|
Notes
If you try to format a number without specifying
format, Format provides functionality similar to the Str
function, although it is internationally aware. However, positive numbers
formatted as strings using Format dont include a leading space reserved for
the sign of the value; those converted using Str
retain the leading space.
If you are formatting a non-localized numeric
string, you should use a user-defined numeric format to ensure that you get
the look you want.
If the Calendar property setting is Gregorian and
format specifies date formatting, the supplied expression must be Gregorian.
If the Visual Basic Calendar property setting is Hijri,
the supplied expression must be Hijri.
If the calendar is Gregorian, the meaning of
format expression symbols is unchanged. If the calendar is Hijri, all date format symbols (for example, dddd, mmmm, yyyy)
have the same meaning but apply to the Hijri
calendar. Format symbols remain in English; symbols that result in text
display (for example, AM and PM) display the string (English or Arabic)
associated with that symbol. The range of certain symbols changes when the calendar
is Hijri.
Formatting Symbols
Table 1
Character
|
Description
|
None
No formatting
|
Display the number with no formatting.
|
:
|
Time separator. In some locales, other characters may be
used to represent the time separator. The time separator separates hours,
minutes, and seconds when time values are formatted. The actual character
used as the time separator in formatted output is determined by your system
settings.
|
/
|
Date separator. In some locales, other characters may be
used to represent the date separator. The date separator separates the day,
month, and year when date values are formatted. The actual character used
as the date separator in formatted output is determined by your system
settings.
|
C
|
Display the date as ddddd and
display the time as t t t
t t, in that order.
Display only date information if there is no fractional part to the date
serial number; display only time information if there is no integer
portion.
|
D
|
Display the day as a number without a leading zero (1 -
31).
|
Dd
|
Display the day as a number with a leading zero (01 -
31).
|
Ddd
|
Display the day as an abbreviation (Sun - Sat).
|
dddd
|
Display the day as a full name (Sunday - Saturday).
|
ddddd
|
Display the date as a complete date (including day,
month, and year), formatted according to your system's short date format
setting. The default short date format is m/d/yy.
|
dddddd
|
Display a date serial number as a complete date
(including day, month, and year) formatted according to the long date
setting recognized by your system. The default long date format is mmmm dd, yyyy.
|
w
|
Display the day of the week as a number (1 for Sunday
through 7 for Saturday).
|
ww
|
Display the week of the year as a number (1 - 53).
|
m
|
Display the month as a number without a leading zero (1
- 12). If m immediately follows h or hh, the
minute rather than the month is displayed.
|
mm
|
Display the month as a number with a leading zero (01 -
12). If m immediately follows h or hh, the minute
rather than the month is displayed.
|
mmm
|
Display the month as an abbreviation (Jan - Dec).
|
mmmm
|
Display the month as a full month name (January -
December).
|
q
|
Display the quarter of the year as a number (1 - 4).
|
y
|
Display the day of the year as a number (1 - 366).
|
yy
|
Display the year as a 2-digit number (00 - 99).
|
yyyy
|
Display the year as a 4-digit number (100 - 9666).
|
h
|
Display the hour as a number without leading zeros (0 -
23).
|
hh
|
Display the hour as a number with leading zeros (00 -
23).
|
n
|
Display the minute as a number without leading zeros (0
- 59).
|
nn
|
Display the minute as a number with leading zeros (00 -
59).
|
s
|
Display the second as a number without leading zeros (0
- 59).
|
ss
|
Display the second as a number with leading zeros (00 -
59).
|
t t t
t t
|
Display a time as a complete time (including hour,
minute, and second), formatted using the time separator defined by the time
format recognized by your system. A leading zero is displayed if the
leading zero option is selected and the time is before 10:00 A.M. or P.M. The default time format is h:mm:ss.
|
AM/PM
|
Use the 12-hour clock and display an uppercase AM with
any hour before noon; display an
uppercase PM with any hour between noon
and 11:59 P.M.
|
am/pm
|
Use the 12-hour clock and display a lowercase AM with
any hour before noon; display a
lowercase PM with any hour between noon
and 11:59 P.M.
|
A/P
|
Use the 12-hour clock and display an uppercase A with
any hour before noon; display an
uppercase P with any hour between noon
and 11:59 P.M.
|
a/p
|
Use the 12-hour clock and display a lowercase A with any
hour before noon; display a
lowercase P with any hour between noon
and 11:59 P.M.
|
AMPM
|
Use the 12-hour clock and display the AM string literal
as defined by your system with any hour before noon; display the PM string
literal as defined by your system with any hour between noon and 11:59 P.M.
AMPM can be either uppercase or lowercase, but the case of the string
displayed matches the string as defined by your system settings. The
default format is AM/PM.
|
0
Digit placeholder
|
Display a digit or a zero. If the expression has a digit
in the position where the 0 appears in the format string, display it;
otherwise, display a zero in that position. If the number has fewer digits
than there are zeros (on either side of the decimal) in the format
expression, display leading or trailing zeros. If the number has more
digits to the right of the decimal separator than there are zeros to the
right of the decimal separator in the format expression, round the number
to as many decimal places as there are zeros. If the number has more digits
to the left of the decimal separator than there are zeros to the left of
the decimal separator in the format expression, display the extra digits
without modification.
|
#
Digit placeholder
|
Display a digit or nothing. If the expression has a
digit in the position where the # appears in the format string, display it;
otherwise, display nothing in that position. This symbol works like the 0
digit placeholder, except that leading and trailing zeros aren't displayed
if the number has the same or fewer digits than there are # characters on
either side of the decimal separator in the format expression.
|
.
Decimal placeholder
|
In some locales, a comma is used as the decimal
separator. The decimal placeholder determines how many digits are displayed
to the left and right of the decimal separator. If the format expression
contains only number signs to the left of this symbol, numbers smaller than
1 begin with a decimal separator. If you always
want a leading zero displayed with fractional numbers, use 0 as the first
digit placeholder to the left of the decimal separator instead. The actual
character used as a decimal placeholder in the formatted output depends on
the Number Format recognized by your system.
|
%
Percent placeholder
|
The expression is multiplied by 100. The percent
character (%) is inserted in the position where it appears in the format
string.
|
,
Thousand separator
|
In some locales, a period is used as a thousand separator. The thousand separator
separates thousands from hundreds within a number that has four or more
places to the left of the decimal separator. Standard use of the thousand separator is specified if the format contains a thousand
separator surrounded by digit placeholders (0 or #). Two adjacent thousand
separators or a thousand separator immediately to
the left of the decimal separator (whether or not a decimal is specified)
means "scale the number by dividing it by 1000, rounding as
needed." You can scale large numbers using this technique. For
example, you can use the format string "##0,,"
to represent 100 million as 100. Numbers smaller than 1 million are
displayed as 0. Two adjacent thousand separators in any position other than
immediately to the left of the decimal separator are treated simply as
specifying the use of a thousand separator. The
actual character used as the thousand separator in
the formatted output depends on the Number Format recognized by your
system.
|
:
Time separator
|
In some locales, other characters may be used to
represent the time separator. The time separator separates hours, minutes,
and seconds when time values are formatted. The actual character used as
the time separator in formatted output is determined by your system
settings.
|
/
Date separator
|
In some locales, other characters may be used to
represent the date separator. The date separator separates the day, month,
and year when date values are formatted. The actual character used as the
date separator in formatted output is determined by your system settings.
|
E- E+ e- e+
Scientific format
|
If the format expression contains at least one digit
placeholder (0 or #) to the right of E-, E+, e-, or e+, the number is
displayed in scientific format and E or e is inserted between the number
and its exponent. The number of digit placeholders to the right determines
the number of digits in the exponent. Use E- or e- to place a minus sign
next to negative exponents. Use E+ or e+ to place a minus sign next to
negative exponents and a plus sign next to positive exponents.
|
- + $ ( ) space
Display a literal character
|
To display a character other than one of those listed,
precede it with a backslash (\) or enclose it in double quotation marks
(" ").
|
\
Display the next character in the format string
|
Many characters in the format expression have a special
meaning and can't be displayed as literal characters unless they are preceded
by a backslash. The backslash itself isn't displayed. Using a backslash is
the same as enclosing the next character in double quotation marks. To
display a backslash, use two backslashes (\\). Examples of characters that
can't be displayed as literal characters are the date- and time-formatting
characters (a, c, d, h, m, n, p, q, s, t, w, y, and /:),
the numeric-formatting characters (#, 0, %, E, e, comma, and period), and
the string-formatting characters (@, &, <, >, and !).
|
"ABC"
Display the string inside the double quotation marks
|
To include a string in format from within code, you must
use Chr(34) to enclose the text (34 is the character code for a
double quotation mark).
|
@
Character placeholder
|
Display a character or a space. If the string has a
character in the position where the @ appears in
the format string, display it; otherwise, display a space in that position.
Placeholders are filled from right to left unless there is an ! character in the format
string. See below.
|
&
Character placeholder
|
Display a character or nothing. If the string has a
character in the position where the & appears,
display it; otherwise, display nothing. Placeholders are filled from right
to left unless there is an ! character
in the format string. See below.
|
<
Force lowercase
|
Display all characters in lowercase format.
|
>
Force uppercase
|
Display all characters in uppercase format.
|
!
Force left to right fill of placeholders
|
The default is to fill from right to left.
|
Named Formats
Visual Basic provides several standard formats to
use with the Format function. Instead of using symbols, you specify these formats
by name in the format argument of the Format function. Always enclose the
format name in double quotation marks (""). The following table
lists the format names you can use.
Named format
|
Description
|
General Number
|
Shows numbers as entered.
|
Currency
|
Shows negative numbers inside parentheses.
|
Fixed
|
Shows at least one digit.
|
Standard
|
Uses a thousands separator.
|
Percent
|
Multiplies the value by 100 with a percent sign at the
end.
|
Scientific
|
Uses standard scientific notation.
|
General Date
|
Shows date and time if expression contains both. If
expression is only a date or a time, the missing information is not
displayed.
|
Long Date
|
Uses the Long Date format specified in the Regional Settings
dialog box of the Microsoft Windows Control Panel.
|
Medium Date
|
Uses the dd-mmm-yy format (for
example, 03-Apr-93)
|
Short Date
|
Uses the Short Date format specified in the Regional
Settings dialog box of the Windows Control Panel.
|
Long Time
|
Shows the hour, minute, second, and "AM" or
"PM" using the h:mm:ss
format.
|
Medium Time
|
Shows the hour, minute, and "AM" or
"PM" using the "hh:mm AM/PM"
format.
|
Short Time
|
Shows the hour and minute using the hh:mm
format.
|
Yes/No
|
Any nonzero numeric value (usually - 1) is Yes. Zero is
No.
|
True/False
|
Any nonzero numeric value (usually - 1) is True. Zero is
False.
|
On/Off
|
Any nonzero numeric value (usually - 1) is On. Zero is
Off.
|
Multiple Formats
A user-defined format expression can have from
one to four sections separated by semicolons. (If the format argument
contains one of the named formats, only one section is allowed.)
If you use
|
The result is
|
One section
|
The format expression applies to all values.
|
Two sections
|
The first section applies to positive values and zeros,
the second to negative values.
|
Three sections
|
The first section applies to positive values, the second
to negative values, and the third to zeros.
|
Four sections
|
The first section applies to positive values, the second
to negative values, the third to zeros, and the fourth to Null values.
|
The following example has two sections: the first
defines the format for positive values and zeros; the second section defines
the format for negative values.
$#,##0;($#,##0)
If
you include semicolons with nothing between them, the missing section is
printed using the format of the positive value. For example, the following
format displays positive and negative values using the format in the first
section and displays "Zero" if the value is zero.
$#,##0;;\Z\e\r\o
Note
If you try to format a number without specifying format, Format
provides the same functionality as the Str
function. However, positive numbers formatted as strings using Format lack
the leading space reserved for displaying the sign of the value; whereas,
those converted using Str retain the leading space.
Examples
The
following conversions assume that the country in the Windows Control Panel is
set to "English (United States)."
Format syntax
|
Result
|
Format(8315.4,
"00000.00")
|
08315.40
|
Format(8315.4, "#####.##")
|
8315.4
|
Format(8315.4,
"##,##0.00")
|
8,315.40
|
Format(315.4,
"$##0.00")
|
$315.40
|
Format(7,
"0.00%")
|
700.00%
|
Format("This
Is A Test", "<")
|
this is a test
|
Format("This
Is A Test", ">")
|
THIS IS A TEST
|
Format(Now,
"m/d/yy")
|
1/27/93
|
Format(Now,
"dddd, mmmm dd, yyyy")
|
Wednesday,
January 27, 1993
|
Format(Now,
"d-mmm")
|
27-Jan
|
Format(Now,
"mmmm-yy")
|
January-93
|
Format(Now,
"hh:mm AM/PM")
|
07:18 AM
|
Format(Now,
"h:mm:ss a/p")
|
7:18:00 a
|
Format(Now,
"d-mmmm h:mm"
|
27-January 7:18
|
Format(Now,
"d-mmmm-yy")
|
27-January-93
|
Format(Now,
"d mmmm")
|
27 January
|
Format(Now,
"mmmm yy")
|
January 93
|
Format(Now,
"hh:mm AM/PM")
|
08:50 PM
|
Format(Now,
"h:mm:ss a/p")
|
8:50:35 p
|
Format(Now,
"h:mm")
|
20:50
|
Format(Now,
"h:mm:ss")
|
20:50:35
|
Format(Now,
"m/d/yy h:mm")
|
1/27/93
20:50
|
Format
(format)
|
Positive 5
|
Negative 5
|
Decimal .5
|
Null
|
Zero-length string
|
5
|
-5
|
0.5
|
|
0
|
5
|
-5
|
1
|
|
0.00
|
5.00
|
-5.00
|
0.50
|
|
#,##0
|
5
|
-5
|
1
|
|
#,##0.00;;;Nil
|
5.00
|
-5.00
|
0.50
|
Nil
|
$#,##0;($#,##0)
|
$5
|
($5)
|
$1
|
|
$#,##0.00;($#,##0.00)
|
$5.00
|
($5.00)
|
$0.50
|
|
0%
|
500%
|
-500%
|
50%
|
|
0.00%
|
500.00%
|
-500.00%
|
50.00%
|
|
0.00E+00
|
5.00E+00
|
-5.00E+00
|
5.00E-01
|
|
0.00E-00
|
5.00E00
|
-5.00E00
|
5.00E-01
|
|
.
|
|
|
|