Format関数って使ってますか?
Format関数は出力表示する際の表示形式を設定する場合に使用します。日付・時刻の表示形式は、和暦や曜日の表示なども色々と設定できるようになっていますので、使う機会も多いかと思います。
この記事では、Format関数について
- Format関数とは
- 日付・時刻の表示設定
- 数値、文字列の表示設定
など基本的な内容から、応用的な使い方についても解説していきます。
今回はFormat関数の使い方について、使い方をわかりやすく解説します。
Format関数とは
Format関数は、指定した書式で値をString型に変換します。
値には数値や日付・時刻の文字列を指定し、出力表示する際の書式を設定することができます。書式には和暦や曜日の表示など設定できるようになっています。
それぞれの書式で出力表示する方法についてみていきましょう。
Format関数の使い方
Format関数は以下のように記述します。
Format( expression[,format [,firstdayofweek [,firstweekofyear]]])
引数の中で「[ ]」で囲まれた部分は省略することができます。
引数についての説明を表にまとめました。
引数 | 説明 |
---|---|
expression | 日付や数値など文字列型に変換したい値を指定 |
format | 書式を指定 |
firstdayofweek | 最初の曜日を指定する定数 |
firstweekofyear | 年内で、最初の週を指定する定数 |
引数formatについては項目が多いので、次の章以降で日付・時刻と値・文字列に分けて解説します。
引数firstdayofweekの設定は次のとおりです。
定数 | 値 | 説明 |
---|---|---|
vbSunday | 1 | 日曜日(デフォルト値) |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
vbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
引数firstweekofyearの設定は次のとおりです。
定数 | 値 | 説明 |
---|---|---|
vbFirstJan1 | 1 | 1 月 1 日が含まれる週から開始(デフォルト値) |
vbFirstFourDays | 2 | 4 日以上が含まれる最初の週が年の第 1 週目 |
vbFirstFullWeek | 3 | 1 週間全体が含まれる最初の週がその年の第 1 週目 |
日付・時刻の表示設定
Format( expression,format )
引数formatの定義済みの書式で日付・時刻に関するものを表にまとめました。
定義済み書式 | 説明 | 出力表示例 |
---|---|---|
Long Date | 長い形式で表した日付 | 2017年9月1日 |
Medium Date | 簡略形式で表した日付 | 09-01-17 |
Short Date | 短い形式で表した日付 | 2017/09/01 |
Long Time | 時刻、分、秒を含む形式で表した時刻 | 14:22:22 |
Medium Time | 時間と分を12時間制で表した時刻午前、午後も追加 | 02:22 午後 |
Short Time | 時間と分を24時間制で表した時刻 | 14:22 |
書式をユーザーで定義する場合は下記の指定文字を使用します。
文字 | 説明 | 例 |
---|---|---|
: | 時刻の区切り記号 | 2:22:22 |
/ | 日付の区切り記号 | 2017/09/01 |
c | dddddおよびtttttの書式で表した日付と時刻を、日付、時刻の順で返す | 2017/09/01 2:22:22 |
d | 日付1桁の場合、先頭に0は付けない | 1~31 |
dd | 日付1桁の場合、先頭に0を付ける | 01~31 |
ddd | 英語(省略形)表記の曜日 | Sun~Sat |
aaa | 日本語(省略形)表記の曜日 | 日~土 |
dddd | 英語表記の曜日 | Sunday~Saturday |
aaaa | 日本語(省略形)表記の曜日 | 日曜日~土曜日 |
ddddd | 年、月、日を含むyyyy/mm/dd形式の日付 | 2017/09/01 |
dddddd | 年、月、日を含むmmmm dd, yyyy形式の日付 | September 01 2017 |
w | 曜日を表す数値 | 日曜日が 1、土曜日が 7 |
ww | その日が一年のうちで何週目かを表す数値 | 1~54 |
m | 月1桁の場合、先頭に0は付けないただし、hやhhの直後にmを指定した場合は、分 | 1~12 |
mm | 月 1桁の場合、先頭に0を付ける ただし、hやhhの直後にmを指定した場合は、分 | 01~12 |
mmm | 英語(省略形)表記の月の名前 | Jan~Dec |
mmmm | 英語表記の月の名前 | January~December |
oooo | 日本語表記の月の名前 | 1月~12月 |
q | 1年のうちで何番目の四半期かを表す数値 | 1~4 |
g | 年号の頭文字 | M、T、S、H |
gg | 年号の頭文字の漢字1文字 | 明、大、昭、平 |
ggg | 年号 | 明治、大正、昭和、平成 |
e | 年号に基づく和暦1桁の場合、先頭に0は付けない | 1 |
ee | 年号に基づく和暦 1桁の場合、先頭に0を付ける | 01 |
y | 1年のうちで何日目かを表す数値 | 1~366 |
yy | 西暦年の下2桁の数値 | 00~99 |
yyyy | 西暦年の4桁の数値 | 100~9999 |
h | 時間1桁の場合、先頭に0は付けない | 0~23 |
hh | 時間 1桁の場合、先頭に0は付ける | 00~23 |
n | 分1桁の場合、先頭に0は付けない | 0~59 |
nn | 分 1桁の場合、先頭に0を付ける | 00~59 |
s | 秒1桁の場合、先頭に0は付けない | 0~59 |
ss | 秒 1桁の場合、先頭に0を付ける | 00~59 |
ttttt | h:nn:ss形式の時刻 | 2:22:22 |
AM/PM | 時刻が正午以前の場合AM正午~午後11時59分の場合PM | ー |
am/pm | 時刻が正午以前の場合am正午~午後11時59分の場合pm | ー |
A/P | 時刻が正午以前の場合A正午~午後11時59分の場合P | ー |
a/p | 時刻が正午以前の場合a正午~午後11時59分の場合p | ー |
この表からもわかるように、日付・時刻に加えて和暦や曜日を出力表示することも可能です。
日付・時刻の表示を設定する方法
まずは日付・時刻を出力表示する設定についてサンプルコードで確認してみましょう。
なお、Format関数の第1引数にNowを指定すると現在の日付・時刻を取得します。
Sub macro1() Dim str As String, msg As String str = "17年9月1日 2時2分2秒" msg = Format(str, "Long Date") & vbCrLf & _ Format(Now, "Short Time") & vbCrLf & _ Format(str, "c") & vbCrLf & _ Format(str, "yyyy/mm/dd hh:nn:ss AM/PM") MsgBox msg End Sub
実行結果:
和暦で表示する設定
Format関数では西暦の日付から和暦に変換して表示することも可能です。
逆に和暦の日付から西暦に変換して表示することも可能です。
サンプルコードで確認しましょう。
Sub macro2() MsgBox Format("17年9月1日", "ggge年mm月dd日") & vbCrLf & _ Format("平成29年9月1日", "yy/mm/dd") End Sub
実行結果:
曜日を表示する設定
曜日を表示する設定についてサンプルコードで確認しましょう。
Sub macro3() MsgBox Format("17年9月1日 2時2分2秒", "ddd") & vbCrLf & _ Format("17年9月1日 2時2分2秒", "aaaa") End Sub
実行結果:
数値・文字列の表示設定
日付・時刻以外の書式をユーザーで定義する場合は下記の指定文字を使用します。
文字 | 説明 |
---|---|
0 | 桁位置や桁数を指定 変換対象の数値の桁数が少なく、指定された桁位置に該当する値がない場合は、その桁には 0 が入る |
# | 桁位置や桁数を指定 変換対象の数値の桁数が少なく、指定された桁位置に該当する値がない場合は、その桁には何も入らない |
@ | 1つの文字またはスペース 対応する位置に文字が存在する場合、その文字が表示文字がなければスペースが表示 |
& | 1つの文字 対応する位置に文字が存在する場合、その文字が表示文字がなければ何も表示せず、詰められて表示 |
< | 小文字に変換 |
> | 大文字に変換 |
! | 文字を左から右に埋める |
サンプルコードで確認しましょう。
Sub macro4() Dim str As String, msg As String str = "123" msg = Format(str, "@、@、@") & vbCrLf & _ Format(str, "@@") & vbCrLf & _ Format(str, "@@@") & vbCrLf & _ Format(str, "@@@@") & vbCrLf & _ Format(str, "@@@@@") & "です" & vbCrLf & _ Format(str, "!@@@@@") & "です" & vbCrLf & _ Format(str, "&&") & vbCrLf & _ Format(str, "&&&") & vbCrLf & _ Format(str, "&&&&") & vbCrLf & _ Format(str, "&&&&&") & vbCrLf & _ Format("ABC", "<&&&&&") & vbCrLf & _ Format("abc", ">&&&&&") MsgBox msg End Sub
実行結果:
0埋めで表示する設定
0(ゼロ)埋めで表示する設定についてサンプルコードで確認しましょう。
Sub macro5() Dim str As String, msg As String str = "123" msg = Format(str, "0") & vbCrLf & _ Format(str, "00") & vbCrLf & _ Format(str, "000") & vbCrLf & _ Format(str, "0000") & vbCrLf & _ Format(str, "00000") MsgBox msg End Sub
実行結果:
小数点以下の桁数を設定
小数点以下の桁数の設定についてサンプルコードで確認しましょう。
小数点3位を四捨五入して、小数点2位まで表示します。
Sub macro6() Dim str As String str = "123.4567" MsgBox Format(str, "0.00") End Sub
実行結果:
文字列の表示設定
大文字を小文字に、小文字を大文字に変換して表示する設定についてサンプルコードで確認しましょう。
Sub macro7() Dim str1 As String, str2 As String str1 = "HELLO" str2 = "hello" MsgBox Format(str1, "<") & vbCrLf & Format(str2, ">") End Sub
実行結果:
まとめ
ここではFormat関数の使い方について説明しました。
Formt関数の第2引数には指定文字を使って、ユーザー定義の書式を設定することができます。
指定文字にはたくさんの種類の文字が指定できますので、ご自身でこの記事を参考にして色々と試してみてください!
使いこなすことができるように、この記事を何度も参考にして下さいね!