2012-05-10
Excelマクロ覚書 HappyMonday算出
休日を自動的に作成するマクロを作成中、ハッピーマンデーってどうやって求めるのかを考えた。
色々サイトを見たのだけれど、「結局どうやってやるのよ!」とか、「なんでこんなにこねくり回してるのよ!」とか、まぁとにかくあんまり参考になりそうなロジックがきれいに提示されているサイトがなかったので自分で作った。
引数に、年、月、週を設定すると、Date型の日付が返る仕組み
Private Function GetMondayDateFromYearMonthWeek(ByVal y As Integer, ByVal m As Integer, ByVal w As Integer) As Date
Dim t As Date
t = DateSerial(y, m, 1)
t = DateAdd(“d”, (8 – Weekday(t, vbMonday)) Mod 7, t) ‘1週目の月曜日
GetMondayDateFromYearMonthWeek = DateAdd(“d”, 7 * (w – 1), t)
End Function
例えば、GetMondayDateFromYearMonthWeek(2012,9,3) とすると、戻り値は2012/9/17となる。
たぶんうまくいくと思うけど、2012年でしか試してない・・・