VBAで今日の月や日付を取得する方法

Excel VBAで「今日の月だけを取り出したい」「今日の年月日をそれぞれ取得したい」というケースはよくあります。

そのときに使うのが Year関数・Month関数・Day関数 です。

  • Year:日付から「年」を取得します。
  • Month:日付から「月」を取得します。
  • Day:日付から「日」を取得します。

例えば「今日の月を取得したい」なら、以下のように「変数 = Month(Date)」と書きます。

実行結果の例
今日は10月です

構文

Year関数:指定日の年を取得する。戻り値は1900〜9999。

Month関数:指定日の月を取得する。戻り値は1~12。

Day関数:指定日の日を取得する。戻り値は1~31。

いずれの関数も引数に日付を指定する必要があります。引数に指定できるものは以下の通りです。

  • Date型の変数や関数(Date、Nowなど)
  • 日付の文字列(”2025/10/9″、”2025-10-9″など)
  • 日付と認識できるVariant型

よく使われる今日の年月日を取得したい場合は、「Date」や「Now」を指定して、「Year(Date)」や「Year(Now)」のように書きます。

Dateはシステム日付、Nowはシステム日時を表すため、どちらを使っても結果は同じになります。

関数の実行結果はInteger型の形式のVariant型で返却されます。

日付と認識できない値を渡すと実行時エラー13が発生

日付は”yyyy/mm/dd”形式の文字列、Date型など、日付と認識できるものであれば許容されます。

しかし、日付と認識できない場合は実行時エラー13が発生します。よくあるエラーはスラッシュ区切りがない8文字の”yyyymmdd”で日付と認識されないケースです。

以下は8文字の”yyyymmdd”の引数が不正としてエラーになるサンプルです。

今日の年月日を取得するサンプルコード

現在の年月日、および、文字列指定の年月日を出力するサンプルです。

実行結果

文字列の日付から年月日を取得するサンプルコード

実行結果
2017
11
30

安全なコードの書き方

日付が正しいかどうかをIsDate関数で事前にチェックしてからYear、Month、Day関数を使うと、エラーを回避できます。