DateAdd関数で1月ごを求めるのに
VBAでDateAdd関数を使って1月後を求めるには、
DateAdd("m",1,基準日) とする訳だが、基準日が月末の場合は単純に翌月を出すのではなく翌月の末日にしたいという状況もある(普通にDateAddで計算すると、例えば基準日が6月30日のときは7月30日が返ってきてしまう)。
基準日が月末かどうかを調べて、月末の場合は2ヶ月後の初日の1日前を算出するような方法を考えてみた。月末かどうかは、基準日と基準日の1日後を比較して同じかどうかで判断する。
If Month(基準日)=DateAdd("d",1,基準日) Then
一月後=DateAdd("m",1,基準日)
Else
基準日の月の初日=DateSerial(Year(基準日),Month(基準日),1)
1月後=DateAdd("m",2,基準日の月の初日)-1
EndIf
分岐を使わずに一発で算出する方法ってないのかなあ?
| 固定リンク | コメント (0) | トラックバック (0)


最近のコメント