Format 関数

書式指定式の指示に従って書式設定されるを含む Variant (String) を戻します。

注:

複数のプラットフォーム間で Office エクスペリエンスを拡張するソリューションを開発することに関心がありますか? 新しい Office アドイン モデルを参照してください。 Office アドインは、VSTO アドインやソリューションに比べてフットプリントが小さく、HTML5、JavaScript、CSS3、XML などのほぼすべてのWeb プログラミング テクノロジーを使用して構築できます。

構文

Format(Expression, [Format], [FirstDayOfWeek], [FirstWeekOfYear])

Format 関数の構文には、次の指定項目があります。

指定項目 説明
Expression 必須。 必ず指定します。任意の有効な式。
Format 省略可能。 有効な名前を持つ、またはユーザー定義の書式指定式。
FirstDayOfWeek 省略可能。 週の最初の曜日を指定する定数です。
FirstWeekOfYear 省略可能。 年内で、最初の週を指定する定数です。

設定

firstdayofweek引数には、これらの設定があります。

定数 説明
vbUseSystem 0 NLS API 設定を使用します。
vbSunday 1 日曜日 (既定)
vbMonday 2 月曜日
vbTuesday 3 火曜日
vbWednesday 4 水曜日
vbThursday 5 木曜日
vbFriday 6 金曜日
vbSaturday 7 土曜日

firstweekofyear引数には、これらの設定があります。

定数 説明
vbUseSystem 0 NLS API 設定を使用します。
vbFirstJan1 1 1 月 1 日が含まれる週から開始します (既定)。
vbFirstFourDays 2 4 日以上が含まれる最初の週が年の第 1 週目になります。
vbFirstFullWeek 3 1 週間全体が含まれる最初の週がその年の第 1 週目になります。

解説

書式設定の対象 説明
数値 定義済みの名前付き数値書式を使用するか、ユーザー定義の数値書式を作成します。
日付と時刻 定義済みの名前付き日付/時刻書式を使用するか、ユーザー定義の日付/時刻書式を作成します。
日付と時刻の連続番号 日付および時間書式または数値書式を使用します。
文字列 自分のユーザー定義文字列書式を作成します。

Format は、format を 257 文字に切り捨てます。

format を指定せずに数値を書式設定する場合、FormatStr 関数と同様の、ただし国際対応がされた機能を提供します。 しかし、Format を使用して文字列として書式設定された正の数値には、値の記号用に予約済みの先頭のスペースは含まれません。Str を使用して変換された数値では、先頭のスペースは保持されます。

ローカライズされていない数値文字列を書式設定する場合、目的の書式を実現するには、ユーザー定義数値書式を使用する必要があります。

注:

Calendar プロパティの設定が Gregorian で、format が日付書式を指定する場合、指定する expressionGregorian である必要があります。 Visual Basic Calendar プロパティの設定が の場合、指定するHijriであるHijri必要があります。

カレンダーがグレゴリオ暦である場合、format 式記号の意味は変わりません。 カレンダーがイスラム暦の場合、すべての日付書式記号 (たとえば、ddddmmmmyyyy) は同じ意味を持ちますが、イスラム暦に適用されます。 書式記号は英語のままです。テキスト表示 (たとえば、AM や PM) になる記号では、その記号に対応する文字列 (英語またはアラビア語) が表示されます。 カレンダーがイスラム暦の場合、特定の記号の範囲は変わります。

日付記号

記号 範囲
d 1 〜 31 (前に 0 を付けない、月の日付)
dd 01 〜 31 (前に 0 を付ける、月の日付)
w 1 〜 7 (週の曜日。土曜日 = 1 から開始)
ww 1 〜 53 (1 年のうちで何週目かを表す数値。前に 0 を付けず、1 月 1 日から開始。)
m 1 〜 12 (月。前に 0 を付けず、1 月 = 1 から開始。)
mm 01 〜 12 (月。前に 0 を付け、1 月 = 01 から開始。)
mmm 月の省略名を表示 (イスラム暦の月の名前には省略形はありません)
mmmm 完全な月名を表示
y 1 〜 366 (1 年のうちで何日目かを表す数値)
yy 00 〜 99 (西暦年の下 2 桁)
yyyy 100 〜 9999 (3 桁または 4 桁の西暦年)

時間記号

記号 範囲
h 0 〜 23 (「AM」または「PM」を追加した 1 〜 12 の数値) (前に 0 を付けない、1 日の中の時間)
hh 00 〜 23 (「AM」または「PM」を追加した 01 〜 12 の数値) (前に 0 を付ける、1 日の中の時間)
n 0 〜 59 (前に 0 を付けない、1 時間の中の分)
nn 00 〜 59 (前に 0 を付ける、1 時間の中の分)
m 0 〜 59 (前に 0 を付けない、1 時間の中の分) h または hh が先行する場合のみ
mm 00 〜 59 (前に 0 を付ける、1 時間の中の分) h または hh が先行する場合のみ
s 0 〜 59 (前に 0 を付けない、1分の中の秒)
ss 00 〜 59 (前に 0 を付ける、1分の中の秒)

使用例

この例では、名前付き書式とユーザー定義書式の両方を使用して値の書式設定を行う、Format 関数のさまざまな使用例を示します。 日付の区切り記号 ( / )、時間の区切り記号 ( : )、リテラルの AM/PM、およびシステムで表示される実際の書式設定される出力は、コードが実行中のロケール設定に基づきます。 時間と日付が開発環境で表示されるとき、コード ロケールでの短い時間形式と短い日付形式が使用されます。 コードの実行により表示される場合は、システム ロケールの短い時間形式と短い日付形式が使用されます。これはコード ロケールとは異なることがあります。 この例では、English/U.S. を使用します。 MyTimeMyDate が、現在のシステムでの短い時間設定と短い日付設定を使用して、開発環境で表示されます。

Dim MyTime, MyDate, MyStr
MyTime = #17:04:23#
MyDate = #January 27, 1993#

' Returns current system time in the system-defined long time format.
MyStr = Format(Time, "Long Time")

' Returns current system date in the system-defined long date format.
MyStr = Format(Date, "Long Date")

MyStr = Format(MyTime, "h:m:s")    ' Returns "17:4:23".
MyStr = Format(MyTime, "hh:mm:ss am/pm")    ' Returns "05:04:23 pm".
MyStr = Format(MyTime, "hh:mm:ss AM/PM")    ' Returns "05:04:23 PM".
MyStr = Format(MyDate, "dddd, mmm d yyyy")    ' Returns "Wednesday, Jan 27 1993".
' If format is not supplied, a string is returned.
MyStr = Format(23)    ' Returns "23".

' User-defined formats.
MyStr = Format(5459.4, "##,##0.00")    ' Returns "5,459.40".
MyStr = Format(334.9, "###0.00")    ' Returns "334.90".
MyStr = Format(5, "0.00%")    ' Returns "500.00%".
MyStr = Format("HELLO", "<")    ' Returns "hello".
MyStr = Format("This is it", ">")    ' Returns "THIS IS IT".

さまざまな数値のさまざまな書式

ユーザー定義の数値書式指定 は、セミコロンで区切られた 1 から 4 のセクションを持つことができます。 書式引数に名前付き数値書式が含まれる場合は、1 つのセクションのみが許可されます。

使用するセクション数 結果
1 セクションのみ 書式指定式はすべての値に適用されます。
2 セクション 最初のセクションは正の値と 0 に適用され、第 2 のセクションは負の値に適用されます。
3 セクション 最初のセクションは正の値、第 2 のセクションは負の値、第 3 のセクションは 0 に適用されます。
4 セクション 最初のセクションは正の値、第 2 のセクションは負の値、第 3 のセクションは 0、第 4 のセクションは Null 値に適用されます。
"$#,##0;($#,##0)"

間に何も入れずに複数のセミコロンを含めた場合、欠けているセクションは、正の値の書式を使用して出力されます。 たとえば、以下の書式は、最初のセクションで書式を使用して正と負の値を表示し、値が 0 の場合は、"Zero" を表示します。

"$#,##0;;\Z\e\r\o"

さまざまな文字列値のさまざまな書式

文字列の書式指定は、セミコロン (;) で区切られた 1 つまたは 2 つのセクションを持つことができます。

使用するセクション数 結果
1 セクションのみ 書式はすべての文字列データに適用されます。
2 セクション 最初のセクションは文字列データに適用され、第 2 のセクションは Null 値と長さ 0 の文字列 ("") に適用されます。

名前付き日付/時刻書式

以下の表は、定義済みの日付および時間の書式名を示します。

書式名 説明
General Date 日付と時刻のどちらか、または両方を表示します (例: 4/3/93 05:34 PM)。 小数の部分がない場合、日付だけを表示します (例: 4/3/93)。 整数の部分がない場合、時間のみを表示します(例: 05:34 PM)。 日付表示はシステム設定に依存します。
Long Date システムの長い日付形式の書式に従って日付を表示します。
Medium Date ホスト アプリケーションの言語バージョンで適切な、中間の長さの日付書式を使用して日付を表示します。
Short Date システムの短い日付書式を使用して日付を表示します。
Long Time システムの長い時間形式を使用して時間を表示します。時間、分、秒が含まれます。
Medium Time 時間と分を、12 時間の書式と AM/PM を使用して表示します。
Short Time 24 時間の形式を使用して時間を表示します (例: 17: 45)。

名前付き数値書式

以下の表は、定義済みの数値の書式名を示します。

書式名 説明
General Number 桁区切り記号を付けずに数を表示します。
Currency 適切な場合は、桁区切り記号を付けて数を表示します。小数点記号の右 2 桁を表示します。 出力はシステム ロケール設定に基づきます。
Fixed 少なくとも整数部 1 桁、小数部 2 桁を表示します。
Standard 区切り記号を付けて、少なくとも整数部 1 桁、小数部 2 桁を表示します。
Percent 数値を 100 倍して、右側にパーセント記号 (%) を付けて表示します。小数部は常に 2 桁です。
Scientific 標準の指数表記を使用します。
Yes/No 数値が 0 の場合は No を表示します。それ以外の場合は Yes を表示します。
True/False 数値が 0 の場合は False を表示します。それ以外の場合は True を表示します。
On/Off 数値が 0 の場合は Off を表示します。それ以外の場合は On を表示します。

ユーザー定義文字列書式

以下の文字を使用して、文字列の書式指定を作成します。

文字 説明
@ 文字プレースホルダー。 文字またはスペースを表示します。 書式文字列でアット マーク (@ ) の表示位置に文字がある文字列の場合は、その文字が表示されます。それ以外の場合は、その位置にスペースが表示されます。 書式文字列に感嘆符 ( ! ) がある場合を除き、プレースホルダーは右側から左側に向かって埋められます。
& 文字プレースホルダー。 文字が表示されるか、または何も表示されません。 アンパサンド (&) の表示位置に文字がある文字列の場合は、その文字が表示されます。それ以外の場合は、何も表示されません。 書式文字列に感嘆符 ( ! ) がある場合を除き、プレースホルダーは右側から左側に向かって埋められます。
< 強制的に小文字にします。 すべての文字を小文字で表示します。
> 強制的に大文字にします。 すべての文字を大文字で表示します。
! プレースホルダーを左から右に向かって埋めるように強制的に設定します。 既定では、プレースホルダーは右から左に向かって埋めように設定されています。

ユーザー定義日付/時刻書式

以下の表は、ユーザー定義日付/時刻書式の作成に使用できる文字を示します。

文字 説明
(:) 時刻の区切り記号。 一部のロケールでは、時刻区切り文字を表す目的で他の文字が使用されることがあります。 時刻の値が書式設定されるときに、時刻区切り文字によって時、分、および秒が区切られます。 書式設定された出力で時刻区切り文字として使用される実際の文字は、システム設定によって決まります。
(/) 日付の区切り記号。 一部のロケールでは、日付区切り文字を表す目的で他の文字が使用されることがあります。 日付値の書式が設定されている場合、日付、月、および年は、日付の区切り記号によって区切られます。 書式設定された出力で、日付の区切り文字として実際に使用される文字は、システム設定によって決まります。
c 日付を ddddd、時刻を ttttt 形式で、日付、時刻の順序で表示します。 日付の連続数値に小数部がない場合は、日付情報だけを表示します。時刻に整数部がない場合は、時刻情報のみを表示します。
d 先行ゼロ (1 から 31) を含まない数値で日を表示します。
dd 日を先頭にゼロ (01 から 31) の数値で表示します。
ddd 日を省略形で表示します (Sun-Sat)。 ローカライズされています。
dddd 日を完全な名前 (日曜日から土曜日) として表示します。 ローカライズされています。
ddddd 日付を完全な日付 (日、月、および年を含む) で表示します。表示形式は各システムの短い日付形式の設定に従っています。 既定の短縮日付フォーマットは、m/d/yy です。
dddddd 日付の連続数値を完全な日付 (日、月、および年を含む) で表示します。表示形式は各システムが認識する長い日付形式の設定に従っています。 既定の長い日付形式は、mmmm dd, yyyy です。
w 曜日を数値 (日曜日が 1 で土曜日が 7) で表示します。
ww 年の週を数値 (1 から 54) として表示します。
m 月を先頭の 0 (1 ~ 12) のない数値として表示します。 h または hh の直後に m が続く場合は、月ではなく分が表示されます。
mm 月を先頭に 0 (01 から 12) の数値で表示します。 h または hh の直後に m が続く場合は、月ではなく分が表示されます。
mmm 月を省略形 (1 月から 12 月) として表示します。 ローカライズされています。
mmmm 月を完全な月名 (1 月から 12 月) として表示します。 ローカライズされています。
q 年の四半期を数値 (1 から 4) として表示します。
y 年の日を数値 (1 から 366) として表示します。
yy 年を 2 桁の数値 (00 から 99) で表示します。
yyyy 年を 4 桁の数字 (100 から 9999) として表示します。
h 先頭の 0 (0 から 23) を含まない数値として時間を表示します。
Hh 先頭に 0 (00 – 23) を含む数値として時間を表示します。
n 先頭の 0 (0 から 59) を含まない数値として分を表示します。
nn 先頭に 0 (00 から 59) を含む数値として分を表示します。
s 2 つ目を先頭の 0 (0 から 59) のない数値として表示します。
ss 2 つ目を先頭の 0 (00 から 59) の数値として表示します。
ttttt 時刻を完全な時刻 (時間、分、および秒を含む) で表示します。表示形式は、各システムが認識する時刻書式で定義された時刻区切り文字を使用します。 先行ゼロ オプションが選択され、時刻が午前 10 時または午後 10 時より前の場合、先行ゼロが表示されます。既定の時刻形式は です h:mm:ss
AM/PM 12 時間形式を使用します。正午までの時間に大文字の AM を、正午から午後 11:59 時までの時間に大文字の PM を付けて表示します。
am/pm 12 時間形式を使用します。正午までの時間に小文字の AM を、正午から午後 11:59 時までの時間に小文字の PM を付けて表示します。
A/P 12 時間形式を使用します。正午までの時間に大文字の A を、正午から午後 11:59 時までの時間に大文字の P を付けて表示します。
a/p 12 時間形式を使用します。正午までの時間に小文字の a を、正午から午後 11:59 時までの時間に小文字の p を付けて表示します。
AMPM 12 時間のクロックを使用し、正午の 1 時間前にシステムによって定義されている AM 文字列リテラル を表示します。正午から午後 11 時 59 分までの任意の時間でシステムによって定義されている PM 文字列リテラルを表示します。AMPM は大文字または小文字のどちらでもかまいませんが、表示される文字列の大文字と小文字は、システム設定で定義されている文字列と一致します。 既定の形式は AM/PM です。 システムで 24 時間時計に設定されている場合は、文字列は通常、長さ 0 の文字列に設定されます。

ユーザー定義数値書式

以下の表は、ユーザー定義数値書式の作成に使用できる文字を示します。

文字 説明
なし 書式指定なしで数値を表示します。
(0) 桁のプレースホルダーです。 1 桁の数または 0 を表示します。 で、書式指定文字列で 0 が指定されている場所に 1 桁の数字がある場合は、その数字が表示されます。それ以外の場合は、その場所に 0 を表示します。数値の整数部または小数部の桁数が、書式指定式内の 0 の桁数より少ない場合は、先行ゼロまたは後置ゼロを表示します。 数値の小数部の桁数が、書式指定式の小数部で指定されている 0 の数より多い場合は、0 の数と同じ桁数に数値が丸められます。 数値の整数部の桁数が、書式指定式の整数部の 0 の数より多い場合は、桁をそのまま表示します。
(#) 桁のプレースホルダーです。 1 桁の数字または 0 を表示します。 式で、書式指定文字列で # が指定されている場所に該当する桁がある場合は、その数字が表示されます。それ以外の場合は、その場所には何も表示されません。 この記号は 0 桁プレースホルダーと同様の機能を持ちます。ただし、数値の桁数が、書式指定式の整数部および小数部にある # 記号よりも同じか少ない場合でも、先頭および末尾に 0 が表示されません。
(.) 小数点のプレースホルダーです。 ロケールによっては、小数点の区切り記号としてコンマが使用されます。 小数点のプレースホルダーは、整数部および小数部に表示する桁数を決定します。 書式指定式でこの記号の左に # 記号だけがある場合、1 未満の数値の先頭は小数点区切り記号になります。 小数値の先頭に 0 を表示するには、整数部の最初の桁のプレースホルダーとして 0 を使用します。 書式指定結果で小数点のプレースホルダーとして実際に使用される記号は、システムで認識される数値書式によって異なります。
(%) パーセントのプレースホルダーです。 式を 100 倍します。 書式指定文字列の表示位置にパーセント記号 ( % ) が挿入されます。
(,) 1,000 単位の区切り記号。 ロケールによっては、桁区切り記号としてピリオドが使用されます。 桁区切り記号は、整数部に 4 桁以上ある数値の百の位と千の位を区切ります。 書式にある桁区切り記号が桁のプレースホルダー (0 または #) で囲まれている場合は、桁区切り記号の標準使用が指定されます。 隣接する 2 つの桁区切り記号または桁区切り記号 (小数点が指定されているかどうかに関係なく) の直ちに左側にある桁区切り記号は、"必要に応じて 1000 で除算して数値をスケーリングする" を意味します。たとえば、"##0" という書式指定文字列を使用して、1 億を 100 として表すことができます。 百万より小さい数字は 0 として表示されます。 小数点のすぐ左以外の位置に 2 つの隣接する区切り記号がある場合は、通常の桁区切り記号を指定したものとして処理されます。 書式指定された出力で、実際に桁区切り記号として使用される記号は、システムで認識される数値書式によって異なります。
(:) 時刻の区切り記号。 一部のロケールでは、時刻区切り文字を表す目的で他の文字が使用されることがあります。 時刻の値が書式設定されるときに、時刻区切り文字によって時、分、および秒が区切られます。 書式設定された出力で時刻区切り文字として使用される実際の文字は、システム設定によって決まります。
(/) 日付の区切り記号。 一部のロケールでは、日付区切り文字を表す目的で他の文字が使用されることがあります。 日付値の書式が設定されている場合、日付、月、および年は、日付の区切り記号によって区切られます。 書式設定された出力で、日付の区切り文字として実際に使用される文字は、システム設定によって決まります。
(E- E+ e- e+) 指数形式。 書式指定式で、E-、E+、e-、または e+ の左に少なくとも 1 つの桁プレースホルダー ( 0 または # ) がある場合、数値は、数値と指数部の間に E または e を挿入して指数形式で表示されます。 右にある桁プレースホルダーの数で、指数の桁数が決まります。 負の指数にマイナス記号を挿入するには、E- または e- を使用します。 負の指数にマイナス記号を入れて、正の指数にプラス記号を入れるには、E+ または e+ を使用します。
- + $ ( ) リテラル文字を表示します。 これ以外の文字をリテラルとして表示するには、その文字の前に円記号 (\) を付けるか、または二重引用符記号 (" ") で囲みます。
(\) 書式指定文字列内の次の文字を表示します。 特殊な意味を持つ文字をリテラル文字として表示するには、その文字の前に円記号 (\) を付けます。 円記号自体は表示されません。 円記号を使用するのは、その文字を二重引用符記号で囲むことと同じです。 円記号自体を表示するには、円記号を 2 つ (\\) 使用します。 リテラル文字として表示できない文字には次のような文字があります。日付書式文字および時刻書式文字 (a、c、d、h、m、n、p、q、s、t、w、y、/、および :)、数値書式文字 (#、0、%、E、e、コンマ、およびピリオド)、および文字列書式文字 (@、&、<、>、および !)。
("ABC") 二重引用符 (" ") で囲まれた文字列を表示します。 コードから書式に文字列を含めるには、Chr(34) を使ってテキストを囲みます (34 は引用符 (") を表す文字コードです)。

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。