【VBA】日付型を文字列に変換する方法(表示形式を指定)
今回はVBAで日付型を文字列に変換する方法を紹介します。
文字列への変換にはFormat関数を使用します。
日付型を文字列に変換する方法
Format(日付, "書式")
Format関数は上のように引数を設定して使います。
日付に日付型の変数を、書式に表示形式を指定することで文字列を得ることができます。
Sub Date2Str()
'''日付型を文字列に変換
Dim dt As Date
dt = Date '今日
Debug.Print Format(Date, "yyyy") '年
Debug.Print Format(Date, "mm") '月
Debug.Print Format(Date, "dd") '日付
Debug.Print Format(Date, "yyyy年mm月dd日") '****年**月**日
End Sub
具体的にはこのようにFormat関数を使用します。
書式を変更することで年月日などを得ることができます。
一番最後のように****年**月**日といった文字列にすることもできます。
書式に使える表示形式
記号 | 範囲 |
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分の中の秒) |
書式に指定できる文字列はこのようなものがあります。
年月日だけではなく、時間なども書式に含めることができます。