【VBA】月の日数を取得する(自作関数)

Excel・VBA

年と月を指定して、月の日数を取得する方法です。

月の日数を取得する関数の概要

年と月を指定すると、月の日数を取得します。

指定した月が、1,3,5,7,8,10,12月であれば31、4,6,9,11であれば30を返します。また、2月はうるう年であれば29、そうでなければ28を返します。

サンプルコード

Function getDoyNum(yr As Long, mnth As Long) As Long

    Dim uru As Long: uru = yr Mod 4

    Select Case mnth
     Case 1, 3, 5, 7, 8, 10, 12
      getDoyNum = 31
     Case 4, 6, 9, 11
      getDoyNum = 30
     Case 2
      If uru = 0 Then
       getDoyNum = 29
      Else
       getDoyNum = 28
      End If
    End Select
      
End Function

必要な引数は年を示す”yr”と月を示す”mnth”の2つで、どちらも整数型です。また、関数の戻り値も整数型となります。

関数の呼び出しの例です。

Sub sample()

    Dim yr As Long: yr = 2021
    Dim mm As Long: mm = 10
    Dim msg As String
    
    msg = yr & "年" & mm & "月の日数は" & getDoyNum(yr, mm) & "日です"
    MsgBox (msg)
    
End Sub

関数作成の目的

年ごとに各月の処理を行う際に、下のようにFor文の中に簡単に組み込める関数が欲しかったので作りました。

Dim yr as long
Dim doy as long

For i = 1 to 4
 yr=2021
 For i = 1 to 12
  doy=getDoyNum(yr,i)
 
 ~  各種処理  ~

 Next
 yr=yr+1
Next

まとめ

自作関数により月の日数を取得する方法を紹介しました。この方法以外にも月の日数を取得する方法は多数ありますが、上記方法も参考にしてみてください。

コメント

タイトルとURLをコピーしました