書式指定文字列式に含まれる指示に従って書式設定された式 (式: 算術演算子または論理的演算子、定数、リテラル値、関数、フィールド名、コントロール、およびプロパティの組み合わせ。これにより、1 つの値を評価します。式は、計算、文字列の処理、データのテストなどに使用できます。)を含むバリアント型 (内部処理形式 String の Variant) の値を返します。
使用例
構文
Format(expression [, format ] [, firstdayofweek ] [, firstweekofyear ] )
Format 関数には、次の引数があります。
設定値
引数 (引数: アクション、イベント、メソッド、プロパティ、関数、またはプロシージャに必要な情報を提供する値のことです。) format には、引数 expression のデータ型に応じてさまざまな設定を使用できます。有効な書式指定文字列式の詳細については、次の表の記事を参照してください。
引数 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 |
年初の週が 3 日以下の場合に限り、次の週を最初の週にします。 |
| vbFirstFullWeek |
3 |
その年最初の 7 日ある週を最初の週とします。 |
解説
| 書式設定の対象 |
操作 |
| 数値 |
定義済み数値書式、または数値表示書式指定文字を使用します。 |
| 日付/時刻 |
定義済み日付/時刻書式、または日付/時刻表示書式指定文字を使用します。 |
| 日付/時刻のシリアル番号 |
日付/時刻書式または数値書式を使用します。 |
| 文字列 |
ユーザー定義の文字列書式を作成します。 |
format を指定せずに数値に書式を設定しようとすると、ロケール情報に対応している点以外は、Format 関数は Str 関数と同様の機能を果たします。ただし、Format 関数を使用して文字列として設定された正の数値には、先頭にプラス記号を表示するためのスペースは含まれませんが、Str 関数を使用して変換された正の数値は先頭にスペースがあります。
非ローカライズ数値文字列の書式を指定する場合は、ユーザー定義の数値書式設定を使って、目的の書式になるようにします。
メモ Calendar プロパティの設定がグレゴリオ暦で、format を使って日付の書式設定を行う場合、expression はグレゴリオ暦にする必要があります。Visual Basic の Calendar プロパティの設定がイスラム暦の場合、expression をイスラム暦にする必要があります。
カレンダーがグレゴリオ暦の場合、format 式の記号の意味は変わりません。カレンダーがイスラム暦の場合、すべての日付書式の記号 (たとえば、dddd、mmmm、yyyy) は同じ意味を持ちますが、イスラム暦に対応します。書式の記号は英語のままです。テキスト表示を行う記号 (たとえば、AM、PM) は、その記号と関連付けられた文字列 (英語またはアラビア語) を表示します。カレンダーがイスラム暦の場合、一部の記号の範囲が変わります。
| 記号 |
範囲 |
| d |
1 ~ 30 |
| dd |
1 ~ 30 |
| ww |
1 ~ 51 |
| mmm |
月の名前を略さず表示します (イスラム暦の月の名前には略名がありません)。 |
| y |
1 ~ 355 |
| yyyy |
100 ~ 9666 |
使用例
式の中で Format 関数を使用する 式を使用できる場合であれば Format 関数を使用できます。たとえば、クエリ内でフィールドの別名の一部として使用したり、フォームまたはレポート上のテキスト ボックスの "Control Source/コントロールソース" プロパティで使用したりできます。前週のレコードだけを出力する場合に、レポートの "Filter/フィルタ" プロパティで使用する式の例を次に示します。
Format([日付],"ww")=Format(Now(),"ww")-1
この例では、レポートのレコード ソースにある [日付] というフィールドに各レコードの変更日付が格納され、その日付がレポートで使用されます。レポートを実行すると、結果がフィルタされ、[日付] フィールド (Format([日付],"ww")) に含まれる値の週が前週 (Format(Now(),"ww")-1) と同じであるレコードのみが表示されます。
VBA コードで Format 関数を使用する
メモ 次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。VBA の使用方法の詳細については、[検索] の横にある一覧の [開発者用リファレンス] をクリックし、検索ボックスに検索する語句を入力してください。
この例では、Format 関数のさまざまな使用方法を示しており、指定された書式とユーザー定義の書式の両方を使用して値に書式を設定します。日付の区切り記号 (/)、時刻の区切り記号 (:)、および AM と PM のリテラルの場合、システムによって表示される実際の出力の書式は、コードが実行されるコンピュータのロケール設定によって異なります。時刻と日付が開発環境で表示される場合、コード ロケールの短い時刻形式と短い日付形式が使用されます。コードを実行することにより表示される場合、システム ロケールの短い時刻形式と短い日付形式が使用されます (コード ロケールによって異なる場合があります)。この例では、英語 (米国) が想定されています。
開発環境では、MyTime および MyDate はシステムの現在の短い時刻設定と短い日付設定を使用して表示されます。
Dim MyTime, MyDate, MyStr
MyTime = #17:04:23#
MyDate = #January 27, 1993#
' 現在のシステム時刻をシステムで定義された長い時刻形式で返します。
MyStr = Format(Time, "Long Time")
' 現在のシステム日付をシステムで定義された長い日付形式で返します。
MyStr = Format(Date, "Long Date")
MyStr = Format(MyTime, "h:m:s") ' "17:4:23" を返します。
MyStr = Format(MyTime, "hh:mm:ss AMPM") ' "05:04:23 PM" を返します。
MyStr = Format(MyDate, "dddd, mmm d yyyy") ' "Wednesday, Jan 27 1993" を
' 返します。
' 書式を指定しない場合は、文字列が返されます。
MyStr = Format(23) ' "23" を返します。
' ユーザー定義の書式を使用します。
MyStr = Format(5459.4, "##,##0.00") ' "5,459.40" を返します。
MyStr = Format(334.9, "###0.00") ' "334.90" を返します。
MyStr = Format(5, "0.00%") ' "500.00%" を返します。
MyStr = Format("HELLO", "<") ' "hello" を返します。
MyStr = Format("This is it", ">") ' "THIS IS IT" を返します。
長さ 0 の文字列を使用した Format の使用
Microsoft Access Version 2.0 およびそれ以前のバージョンでは、Format 関数を使用して、長さ 0 の文字列 (長さ 0 の文字列: 文字を 1 つも含まない文字列。長さ 0 の文字列を使うと、意図的にフィールドに値がないようにしていることを示すことができます。長さ 0 の文字列を入力するには、スペースを含めずに二重引用符を二度続けて (" ") 入力します。)にある値を返し、値に別の値を返すことができます。たとえば、次のように書式指定文字列式を Format 関数と共に使用して、コードから適切な文字列値を返すことができます。
Dim varX As Variant
Dim varStrX As Variant
' varStrX に任意の値を設定し、Format 関数に渡します。
varX = Format(varStrX, "@;ZLS;Null")
Access 97 以降では、Null である場合を別途にテストし、その結果に基づいて適切な値を取得する必要があります。たとえば、式の中で次のように Format 関数と IIf 関数を使います。
varX = IIf(IsNull(varStrX),"Null", Format(varStrX, "@;ZLS"))
変更が必要とされるのは、長さ 0 の文字列であるか Null 値であるかに応じて、Format 関数で違う書式を文字列に設定する場合に限ります。Format 関数で使うそれ以外の書式の式は、以前のバージョンと同じです。
Access Version 2.0 およびそれ以前のバージョンのデータベースを Access 2002 に変換する場合は、Null である場合を別途にテストするようにコードを書き換える必要があります。