教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAのWorksheetFunctionオブジェクトで使用するEomonth関数の使い方

構文

構文は以下の通りです。

WorksheetFunction.EoMonth(開始日, 月数)

解説

WorksheetFunctionは、ExcelVBAの組み込みオブジェクトで、Excelのワークシート関数をVBAから呼び出す際に使用します。EoMonth関数は、指定した日付から数か月後または前の月の末日を返す関数です。この関数を使用すると、特定の月の月末日を簡単に計算できます。例、「2023年1月1日」から3ヶ月後の月末日」は「2023年4月30日」として計算されます。開始日は、基準となる日付を指定します。月数は、開始日から何か月後または前の月末日を取得するか指定します。正の数なら未来、負の数なら過去を示します。

プログラミング例

具体的なプログラミング例を紹介します。

(例1)基本的な使い方

Sub 月末日を取得()
    Dim 基準日 As Date
    Dim 結果 As Date
    基準日 = DateValue("2023/1/15") ' 2023年1月15日を基準日とする
    結果 = WorksheetFunction.EoMonth(基準日, 2) ' 2か月後の月末日を取得
    MsgBox "基準日から2か月後の月末日は " & 結果
End Sub

上記のプログラムは、EoMonth関数に「2023年1月15日」と2を渡して、2か月後の月末日を取得しています。この場合、結果は「2023年3月31日」となります。

(例2)過去の月末日を取得する

Sub 過去の月末日を取得()
    Dim 基準日 As Date
    Dim 結果 As Date
    基準日 = DateValue("2023/1/15") ' 2023年1月15日を基準日とする
    結果 = WorksheetFunction.EoMonth(基準日, -1) ' 1か月前の月末日を取得
    MsgBox "基準日から1か月前の月末日は " & 結果
End Sub

上記のプログラムは、EoMonth関数に「2023年1月15日」と-1を渡して、1か月前の月末日を取得しています。この場合、結果は「2022年12月31日」となります。

まとめ

EoMonth関数は、指定した日付から何か月後または前の月末日を簡単に取得できる関数です。引き数として、基準日と移動する月数を指定するだけで、未来や過去の月末日を簡単に計算できます。