年と月を指定して、月の日数を取得する方法です。
月の日数を取得する関数の概要
年と月を指定すると、月の日数を取得します。
指定した月が、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
まとめ
自作関数により月の日数を取得する方法を紹介しました。この方法以外にも月の日数を取得する方法は多数ありますが、上記方法も参考にしてみてください。
コメント