【用語集に記載の内容について】

用語集に記載されているメソッドや関数の引数は、VBAエキスパート試験の試験範囲に基づいており、すべての引数を網羅しておりません。 また、書式は公式テキストの記載に準じています。
試験範囲外の引数や詳細については、ヘルプ機能やオブジェクトブラウザーをご参照ください。

【コードをコピーして実行する場合の注意】

文字コードの関係上、半角の「¥」は「/」で表示されるため、当サイトでは全角の「¥」で記載しています。当サイトのコードをコピーして実行する場合は、全角の「¥」を半角の「¥」に変換してください。

EOMONTH関数(ワークシート関数)

名称EOMONTH関数(ワークシート関数)
説明
指定した日付の月から、指定した月数後または月数前の月末日をシリアル値で返すワークシート関数です。
書式
WorksheetFunction.EoMonth(基準日, 月数)

基準日:基準となる日付を指定
月数:基準日に指定した日付から何か月後または何か月前の月末日を求めるかを数値で指定

<月数に指定する値に対する戻り値>
正の数:基準日の将来の日付の月末日が返る
0:基準日の月末日が返る
負の数:基準日の過去の日付の月末日が返る
コード例①
【基準日の月末日を取得】
Sub Macro1()
    Dim endDate As Date
    
    'EOMONTH関数の戻り値をDate型の変数に格納
    endDate = WorksheetFunction.EoMonth("2024/10/1", 0)
    MsgBox endDate
End Sub

EOMONTH関数の月数に0を指定しているので、指定した日付の月末日を取得します。

EOMONTH関数の戻り値はシリアル値(数値)ですが、日付型の変数に格納すると、日付データとして扱われます。

マクロを実行すると、「2024/10/31」のメッセージボックスが表示されます。
コード例②
【基準日の1か月後の月末日を取得】
Sub Macro2()
    Dim endDate As Date
    
    'EOMONTH関数の戻り値をDate型の変数に格納
    endDate = WorksheetFunction.EoMonth("2024/10/1", 1)
    MsgBox endDate
End Sub

EOMONTH関数の月数に1を指定しているので、指定した日付の翌月の月末日を取得します。

EOMONTH関数の戻り値はシリアル値(数値)ですが、日付型の変数に格納すると、日付データとして扱われます。

マクロを実行すると、「2024/11/30」のメッセージボックスが表示されます。
コード例③
【基準日の1か月前の月末日を取得】
Sub Macro3()
    Dim endDate As Date
    
    'EOMONTH関数の戻り値をDate型の変数に格納
    endDate = WorksheetFunction.EoMonth("2024/10/1", -1)
    MsgBox endDate
End Sub

EOMONTH関数の月数に-1を指定しているので、指定した日付の前月の月末日を取得します。

EOMONTH関数の戻り値はシリアル値(数値)ですが、日付型の変数に格納すると、日付データとして扱われます。

マクロを実行すると、「2024/09/30」のメッセージボックスが表示されます。
コード例④
【基準日の月末日をセルに代入】
Sub Macro4()
    Range("A1") = WorksheetFunction.EoMonth("2024/10/1", 0)
End Sub

EOMONTH関数の月数に0を指定しているので、指定した日付の月末日を取得します。

EOMONTH関数の戻り値は、シリアル値(数値)です。

ワークシートのセルの書式設定の初期設定は[標準]であるため、
、EOMONTH関数の戻り値を代入すると、シリアル値が表示されます。

そのため、日付の書式で表示する場合は、EOMONTH関数の戻り値を代入するセルに日付の書式設定が必要です。

マクロを実行すると、アクティブシートのセルA1に日付の書式設定がされている場合は、以下のように「2024/10/31」が表示されます。
A
1 2024/10/31
カテゴリスタンダード