ExcelVBA 日付データから「月を取得」「月初や月末を求める」方法

 

ExcelVBA  日付データから「月を取得」「月初や月末を求める」といった処理を行うことで、データの集計やレポート作成を効率化できます。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA  日付データから「月を取得」「月初や月末を求める」|シーン

以下のシーンで利用します。

1.指定した日付の「月」だけを取り出す。

2.「月の最終日」を求めて、月末締めのデータを抽出する。

3.「月初日」を求めて、月ごとの処理を行う。

 

Excel VBA 「月を取得」「月初や月末を求める」サンプルコード

指定した日付の「月」を取得

標準モジュール
指定した日付の「月」を取得するには Month 関数を使用します。

Option Explicit

Sub GetMonth()
    Dim targetDate As Date
    targetDate = Date ' 今日の日付を取得
    MsgBox "対象の日付の月は " & Month(targetDate) & " 月です"
End Sub

今日が 2025年2月15日 なら、メッセージボックスに「対象の日付の月は 2 月です」と表示されます。

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

指定した日付の「月初日」を取得

標準モジュール
指定した日付の月初日は DateSerial 関数を使うと求められます。

Option Explicit

Sub GetFirstDayOfMonth()
    Dim targetDate As Date
    targetDate = Date ' 今日の日付
    MsgBox "月の初日は " & DateSerial(Year(targetDate), Month(targetDate), 1)
End Sub

今日が 2025年2月15日 なら、「月の初日は 2025/02/01」と表示されます。

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

指定した日付の「月の最終日」を取得

標準モジュール
下記はDateSerial 関数を使い取得します。

Option Explicit

Sub GetLastDayOfMonth()
    Dim targetDate As Date
    targetDate = Date ' 今日の日付
    MsgBox "月の最終日は " & DateSerial(Year(targetDate), Month(targetDate) + 1, 0)
End Sub

今日が 2025年2月15日 なら、「月の最終日は 2025/02/28」と表示されます。(うるう年なら29日)

注意点
1.うるう年の考慮
DateSerial(Year(targetDate), 3, 0) を使えば、2月の最終日が28日または29日と自動判定される。

2.日付の入力ミスを防ぐ
IsDate 関数で入力値が正しい日付かチェックすると安全

Excel VBA 日付データから「月を取得」「月初や月末を求める」|まとめ

処理内容 VBA関数
月の取得 Month(Date) 2(2025/2/15なら)
月初日 DateSerial(Year(Date), Month(Date), 1) 2025/02/01
月末日 DateSerial(Year(Date), Month(Date) + 1, 0) 2025/02/28(うるう年は29日)

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問