前月の末日


日付で集計処理などをする際に前月の一日から末日までの範囲で処理が必要になったりします。
一日なら色々と関数を利用すれば出来るけど末日って月によってバラバラだし〜。
配列で持たせるのが一番楽かな?・・・でもうるう年の処理はどうしよう?
なんていろいろ考えていたときにこんな方法を思いつきました。

Function LastMonth(ByRef NowDate, ByVal FirstDay, ByVal LatDay)
 LastDay = DateAdd("d", -Day(NowDate), NowDate)
 FirstDay = DateAdd("d", -Day(LastDay)+1, LastDay)
End Function

呼び出し方はLastMonth(日付,変数1,変数2)

たとえば日付が2006年4月11日だった場合

まずDay関数で日付から日にちだけを取り出しますので11が返ってきます。
次にDateAdd関数で日付の引き算をします。
2006年4月11日-11日=2006年3月31日

更に3月の末日からまた日にちだけを取り出し引き算をします。
ここで注意するのは日付を取り出して1を足しています。
2006年3月31日-31日+1日=2006年3月1日

このようにすれば一日から末日までの日付取得が出来ました。
Copyright 1997-Now ZeroWave All Rights Reserved