データを出力する際に、出力するデータの表示形式を指定する方法をご説明します。
出力時に表示形式を指定するには「Format」関数を使用します。
「Format」関数は値を指定した表示形式の文字列型に変換します。
説明が長いため、とりあえずサンプルコードが知りたい方は、もくじの「サンプルコード」に飛んでください。
1.Format関数の使い方
Format関数は、値を指定した表示書式で文字列型に変換します。
変換する方法は、「定義済みの書式」と、「書式記号」を使用して指定する方法があります。
定義済みの書式については、後ほど説明します。
構文は次のように書きます。
「Format(Expression, [Format], [FirstDayOfWeek], [FirstWeekOfYear])」
Format関数の引数一覧
指定項目 | 省略 | 説明 |
Expression | 必須 | 任意の有効な式を指定します。 |
Format | 省略可能 | 有効な名前を持つ、またはユーザー定義の書式指定式を指定します。 |
FirstDayOfWeek | 省略可能 | 週の最初の曜日を指定します。 |
FirstWeekOfYear | 省略可能 | 年内で、最初の週を指定します。 |
引数「FirstDayOfWeek」の定数一覧
「vbSunday」が既定値となります。
定数 | 値 | 説明 |
vbUseSystem | 0 | NLS API 設定を使用します。 |
vbSunday | 1 | 日曜日 |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
vbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
引数「FirstWeekOfYear」の定数一覧
「vbFirstJan1」が既定値となります。
定数 | 値 | 説明 |
vbUseSystem | 0 | NLS API 設定を使用します。 |
vbFirstJan1 | 1 | 1 月 1 日が含まれる週から開始します 。 |
vbFirstFourDays | 2 | 4 日以上が含まれる最初の週が年の第 1 週目になります。 |
vbFirstFullWeek | 3 | 1 週間全体が含まれる最初の週がその年の第 1 週目になります。 |
2.定義済みの書式
「定義済みの書式」とは標準で用意されている、表示書式の事です。
定義済みの書式には次の様な書式が用意されています。
定義済みの日付・時間の書式
書式名 | 説明 | 表示例 |
Long Date | システムの長い日付形式の書式に従って日付を表示します。 | 2019年1月1日 |
Medium Date | 中間の長さの日付書式を使用して日付を表示します。 | 19-01-01 |
Short Date | 短い日付書式を使用して日付を表示します。 | 2019/01/01 |
Long Time | 長い時間形式を使用して時間を表示します。時間、分、秒が含まれます。 | 17:00:00 |
Medium Time | 時間と分を、12 時間の書式と AM/PM を使用して表示します。 | 01:00 午後 |
Short Time | 24 時間の形式を使用して時間を表示します 。 | 17:00 |
定義済みの数値の書式
書式名 | 説明 |
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を表示します。 |
3.書式記号
「書式記号」は、数値を示す「#」や「0」、日付を示す「yyyy」や「mm」、「dd」などです。
数値の書式記号
書式 | 説明 |
# | 桁があればそれを表示します。 |
0 | 桁があればそれを表示します。 ないときは0を表示します。 |
% | 数値を100倍し%記号を表示します。 |
\ | \記号を表示します。 |
値・文字列の書式記号
文字 | 説明 |
@ | 任意の1文字またはスペースを表示します。 |
& | 任意の1文字。 存在しないときはスペースを返しません。 |
< | すべての文字を小文字で表示します。 |
> | すべての文字を大文字で表示します。 |
! | 文字を左から右に向かって埋めるように設定します。 |
日付・時間の書式記号
日付
文字 | 説明 |
(/) | 日付の区切り記号。 |
c | 日付をddddd、時刻をttttt形式で、日付、時刻の順序で表示します。 |
d | 日を先頭に0のない数値(1〜31)で表示します。 |
dd | 日を先頭に0のある数値(01〜31)で表示します。 |
ddd | 日を曜日の省略形(日〜土)で表示します。 |
dddd | 日を曜日の完全な名前(日曜日〜土曜日)で表示します。 |
ddddd | 日付を完全な日付(日、月、および年を含む)で表示します。 既定の短縮日付フォーマットは、m/d/yyです。 |
dddddd | 日付の連続数値を完全な日付(日、月、および年を含む)で表示します。 既定の長い日付形式は、mmmmdd,yyyyです。 |
w | 曜日を数値(日曜日が1で土曜日が7)で表示します。 |
ww | 1年のうちの何週目であるかを数値(1〜54)で表示します。 |
m | 月を先頭に0のない数値(1〜12)で表示します。 hまたはhhの直後にmが続く場合は、月ではなく分が表示されます。 |
mm | 月を先頭に0のある数値(01〜12)で表示します。 hまたはhhの直後にmが続く場合は、月ではなく分が表示されます。 |
mmm | 月を月名の省略形(1月〜12月)で表示します。 |
mmmm | 月を完全な月名(1月〜12月)で表示します。 |
q | 1年の四半期を数値(1〜4)で表示します。 |
y | 1年の何日目かを数値(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 | 秒を先頭に0のない数値(0〜59)で表示します。 |
ss | 秒を先頭に0のある数値(00〜59)で表示します。 |
ttttt | 時刻を完全な時刻(時間、分、および秒を含む)で表示します。 既定の時刻書式は、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時間形式を使用します。 既定の形式はAM/PMです。 |
4.サンプルコード
定義済みの日付・時間の書式コード
書式名は「””」でくくります。
Sub Sample1()
MsgBox Format(Now, "Long Date")
End Sub
定義済みの数値の書式コード
書式名は「””」でくくります。
数値100000を通貨で表示します。
Sub Sample2()
MsgBox Format(100000, "Currency")
End Sub
数値の書式記号
Sub Sample3()
Dim myStr As String
myStr = Format(12345, "###,###") & vbCrLf
myStr = myStr & Format(12345, "000,000") & vbCrLf
myStr = myStr & Format(12345, "0") & vbCrLf
myStr = myStr & Format(12345, "0.00%") & vbCrLf
myStr = myStr & Format(12345, "#,###") & vbCrLf
myStr = myStr & Format(12345, "#,###.00")
MsgBox myStr
End Sub
値・文字列の書式記号コード
「ABCD」という文字列を、1つずつ(@)で表示します。
Sub Sample4()
MsgBox Format("ABCD", "(@)(@)(@)(@)")
End Sub
Sub Sample5()
Dim myStr As String
myStr = "「@」マークの表示方法" & vbCrLf
myStr = myStr & Format("ABC", "@、@、@") & vbCrLf
myStr = myStr & Format("ABC", "@@") & vbCrLf
myStr = myStr & Format("ABC", "@@@") & vbCrLf
myStr = myStr & Format("ABC", "@@@@") & vbCrLf
myStr = myStr & Format("ABC", "@@@@@") & vbCrLf
myStr = myStr & Format("ABC", "!@@@@@") & vbCrLf
myStr = myStr & "「&」の表示方法" & vbCrLf
myStr = myStr & Format("ABC", "&&") & vbCrLf
myStr = myStr & Format("ABC", "&&&") & vbCrLf
myStr = myStr & Format("ABC", "&&&&") & vbCrLf
myStr = myStr & Format("ABC", "&&&&&") & vbCrLf
myStr = myStr & Format("ABC", "<&&&&&") & vbCrLf
myStr = myStr & Format("ABC", ">&&&&&")
MsgBox myStr
End Sub
日付・時間の書式記号
Sub Sample6()
Dim myStr As String
myStr = Format(Now, "yy年") & vbCrLf
myStr = myStr & Format(Now, "yyyy年mm月dd日") & vbCrLf
myStr = myStr & Format(Now, "yyyy/m/d") & vbCrLf
myStr = myStr & Format(Now, "yyyy/mm/dd") & vbCrLf
myStr = myStr & Format(Now, "yyyy-mm-dd") & vbCrLf
myStr = myStr & Format(Now, "hh:nn:ss") & vbCrLf
myStr = myStr & Format(Now, "hh-nn-ss") & vbCrLf
myStr = myStr & Format(Now, "h:n:s") & vbCrLf
MsgBox myStr
End Sub