指定された年月の最終日を取得する:Excel VBA

Do LoopとDay関数を使い、月末の日付を取得します。




Homeに戻る > Excelでよく使うフレーズへ > 表に日付と曜日を自動的に表示するへ

例えばカレンダーを作成する場合、まず指定された年月の最終日を求める必要があります。

最終日を取得する方法はいくつかありますが、ここでは28日からループで1日ずつ加算し、DAY関数で日付が1日になるのをチェックし、なればその1日前の日付を取得します。

他にEOMONTH関数やDateSerial関数を使う方法がありますが、現在のパソコン性能ならばどれを使っても速度の差はありません、分かり易いものを使ってください。

掲載しているように、取得するコードをFunctionプロシージャにしておけば他のアプリ開発にも使いまわしでできるので便利です。


月末の日付を取得する実行画面

「作成する年」と「作成する月」にそれぞれ入力し、「作成開始」ボタンをクリックすると、その年月の最終日が計算されます。
日付と曜日を表示させるシート

もし、年や月が入力されていない場合はメッセージが表示されます。
未入力の場合のメッセージ

月末の日付を取得するプログラムソース

Option Explicit

'指定された月の末日を取得
Private Function MonLastDay(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
    MonLastDay = i - 1
End Function

'日付を表示する
Private Sub DateDisp()
    Dim lastday As Long
    
    '末日を取得
    lastday = MonLastDay(Range("C2"), Range("C3"))
End Sub

'作成開始ボタン
Private Sub CommandButton1_Click()
    If Range("C2") = "" Then
        MsgBox "作成する年を入力してください。"
        Exit Sub
    End If
    
    If Range("C3") = "" Then
        MsgBox "作成する月を入力してください。"
        Exit Sub
    End If
    
    '日付の表示
    Call DateDisp
End Sub


Homeに戻る > Excelでよく使うフレーズへ > 表に日付と曜日を自動的に表示するへ

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


Copyright (c) Excel-Excel ! All rights reserved