- 締切済み
月末の求め方について
VBAで関数を使わないで閏年から各月の月末が求められるプログラムを教えてください。 任意の年と月から求められるようにしたいです。 分からなくて困ってます
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kkkkkm
- ベストアンサー率66% (1719/2589)
ひとりごと DateSerialはVBAの関数ですが・・・ https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/dateserial-function
- imogasi
- ベストアンサー率27% (4737/17069)
例データ A2:C13 C列は結果です。 年 月 月末日 2021 1 2021/1/31 2021 2 2021/2/28 2021 3 2021/3/31 2021 4 2021/4/30 2021 5 2021/5/31 2021 6 2021/6/30 2021 7 2021/7/31 2021 8 2021/8/31 2021 9 2021/9/30 2021 10 2021/10/31 2021 11 2021/11/30 2021 12 2021/12/31 ーー 標準モジュールに Sub test01() For i = 2 To 13 Cells(i, "c") = DateSerial(Cells(i, "A"), Cells(i, "B") + 1, 1) - 1 Next i End Sub === C列が月末日です。 === 「次月の月初1日の前日が前月の月末日」です。 Excelの「日付シリアル値」の仕組の理解が足りないから、こういう質問になるのではないか。 Excelが日付シリアル値から、年や月など、色々内部で計算してくれているせいで、こんなに簡単になる。 日付シリアル値のメリットは、日数差の計算が引き算で済む、そのほか、本件などがそれにあたるのではないか。 関数ではEOMONTHだよね。 https://www.tipsfound.com/excel/04eomonth
- kkkkkm
- ベストアンサー率66% (1719/2589)
以下で試してみてください。 Sub Test() Dim mMonth As Integer, mYear As Long Dim mDate As Date mYear = 2021 mMonth = 3 mDate = mYear & "/" & mMonth + 1 & "/1" Debug.Print mDate - 1 End Sub