Excel VBAで月の末日を取得する

ここではDateSerial関数などを使用しない、「Do Loop」を使ったシンプルなやり方を掲載します。



Homeに戻る > Excel 日付・時間のTipsへ

月の末日を取得するには、日程表作成などでよく使います。

下記のコードでは、28日から1づつ加算し、1日になれば-1し末日を調べています。

翌月の1日から-1し月末を求める方法もあります。例えば2月末日ならば、3月31日 -1 とする方法です。

しかし、この場合、月を+1しないといけないので前処理が必要です。

関連するTipsの「日付に変換するExcel関数:数値を文字列に変換した後・日付に変換できない理由」も参照してください。



コマンドボタン クリックイベントで末日を取得する

Private Sub CommandButton1_Click()
    CommandButton1.Caption = MonthLastDay(2006, 10)
End Sub

月の末日を取得する標準モジュールコード

  • MonthLastDayプロシージャを作成しました。
  • 引数は、yyが年、mmが月です。
  • 初めに、1日の日付を変数のtdateに格納しています。
  • do Loopで28日から1日づつ+1し、日付が1に変わればループを抜けます。
  • 末日は1日の前日なので、-1し返します。

Public Function MonthLastDay(yy As Integer, mm As Integer) As Integer
    Dim i As Integer
    Dim tdate As Date
    
    tdate = Format(yy & "/" & mm & "/1", "yyyy/mm/dd")
    i = 28
    Do
        i = i + 1
    Loop Until Day(tdate + i - 1) = 1
    MonthLastDay = i - 1
End Function

月の末日を取得する実行前

コマンドボタンをクリックすると、クリックイベントが発生しMonthLastDayプロシージャを呼び出します。

実行前

月の末日を取得する実行結果

戻り値の月の末日をコマンドボタンに表示しています。

日付が表示された


Homeに戻る > Excel 日付・時間のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved