#052 今日が今年度の何日目かを知るには? VBA

今日が今年度の何日目か、つまり4月1日を1日目として何日目かを知るには、次のようにします。

まず次の式では、今日が今年1月1日から何日目であるかが分かります。
DatePart("y", Date)
続いて、4月1日を年度初めとする場合、1月1日との日数差を差し引けば今日が今年度の何日目かを知ることができます。
DatePart("y", Date) - DatePart("y", #4/1/99#) + 1

しかし、ここでは #4/1/99# と固定の日付を記述しているので汎用性がありません。また、1月〜3月の場合には DatePart("y", Date) の返り値が1月1日以降また1から始まりますので、単純に引き算できなくなり、それを考慮するとコードがややこしくなってしまいます。そのため次のように、今日の日付と4月1日の差を直接求める方法がよいでしょう。
DateDiff("d", _
       DateSerial(IIf(Month(Date) >= 4, Year(Date), Year(Date) - 1), 4, 1), Date) + 1

ここではまず、赤色で示した部分で今年度の最初の日、つまり4月1日の日付を求めます。1月〜3月の場合にはその前年の4月1日が返されます。続いて DateDiff関数 を使って今日の日付との日数差を求めます。DateDiff関数は、引数に与えられた2つの日時の差を求めるための関数です。一番目の引数に "d" を指定することによって、2つの日時の "日" の差を求めることができます。この関数ではこれ以外にも次のような日付/時刻の差を取得することができます。
yyyy
q 四半期
m
d
ww
h
n
s

※この方法は、クエリー式や、フォーム/レポートのテキストボックスなどのコントロールソースとしても使うことができます。その場合には式の前に "=" を付け、さらに Date() のように後ろにカッコを付ける必要があります。
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved