Excel VBA Format関数の使い方と表示形式を指定する方法

VBA関数

データを出力する際に、出力するデータの表示形式を指定する方法をご説明します。

出力時に表示形式を指定するには「Format」関数を使用します。

「Format」関数は値を指定した表示形式の文字列型に変換します。

説明が長いため、とりあえずサンプルコードが知りたい方は、もくじの「サンプルコード」に飛んでください。

1.Format関数の使い方

Format関数は、値を指定した表示書式で文字列型に変換します。

変換する方法は、「定義済みの書式」と、「書式記号」を使用して指定する方法があります。

定義済みの書式については、後ほど説明します。

構文は次のように書きます。

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

Format関数の引数一覧

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

「vbSunday」が既定値となります。

定数説明
vbUseSystem0NLS API 設定を使用します。
vbSunday1日曜日
vbMonday2月曜日
vbTuesday3火曜日
vbWednesday4水曜日
vbThursday5木曜日
vbFriday6金曜日
vbSaturday7土曜日
引数「FirstWeekOfYear」の定数一覧

「vbFirstJan1」が既定値となります。

定数説明
vbUseSystem0NLS API 設定を使用します。
vbFirstJan111 月 1 日が含まれる週から開始します 。
vbFirstFourDays24 日以上が含まれる最初の週が年の第 1 週目になります。
vbFirstFullWeek31 週間全体が含まれる最初の週がその年の第 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 Time24 時間の形式を使用して時間を表示します 。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)で表示します。
ww1年のうちの何週目であるかを数値(1〜54)で表示します。
m月を先頭に0のない数値(1〜12)で表示します。
hまたはhhの直後にmが続く場合は、月ではなく分が表示されます。
mm月を先頭に0のある数値(01〜12)で表示します。
hまたはhhの直後にmが続く場合は、月ではなく分が表示されます。
mmm月を月名の省略形(1月〜12月)で表示します。
mmmm月を完全な月名(1月〜12月)で表示します。
q1年の四半期を数値(1〜4)で表示します。
y1年の何日目かを数値(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/PM12時間形式を使用します。
正午までの時間に大文字のAMを、正午から午後11:59時までの時間に大文字のPMを付けて表示します。
am/pm12時間形式を使用します。
正午までの時間に小文字のAMを、正午から午後11:59時までの時間に小文字のPMを付けて表示します。
A/P12時間形式を使用します。
正午までの時間に大文字のAを、正午から午後11:59時までの時間に大文字のPを付けて表示します。
a/p12時間形式を使用します。
正午までの時間に小文字のaを、正午から午後11:59時までの時間に小文字のpを付けて表示します。
AMPM12時間形式を使用します。
既定の形式は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
タイトルとURLをコピーしました