Division By Zero

ゼロで割る

VBAでの曜日判定に関するメモ

今日の公立図書館はWebで予約もできるし、予約した本が届くとメールで通知してくれるのでとても便利だが、取り置きの期限日を忘れてしまうことがあったので、以前、Outlook VBAで自動的にタスク登録する簡単なスクリプトを書いた。

仕事場の近くの図書館で予約した場合、休日に取り置き期限に気付き、わざわざ休日に出向くか、泣く泣くあきらめるかしていたが、先週またやってしまったので、スクリプトを少し改修した。

intWeekday = Weekday(taskItem.DueDate)
Select Case intWeekday
    Case vbMonday
        taskItem.DueDate = taskItem.DueDate - 3
    Case vbSunday
        taskItem.DueDate = taskItem.DueDate - 2
    Case vbSaturday
        taskItem.DueDate = taskItem.DueDate - 1
End Select

この図書館は月曜日が休館日なので除外している。祝日だったら、どうする?検索したら、祝日判定用マクロなるものがあることがわかった。せっかくなので組み込んでみた。

HOLIDAY_CHECK:
intWeekday = Weekday(taskItem.DueDate)
Select Case intWeekday
    Case vbMonday
        taskItem.DueDate = taskItem.DueDate - 3
    Case vbSunday
        taskItem.DueDate = taskItem.DueDate - 2
    Case vbSaturday
        taskItem.DueDate = taskItem.DueDate - 1
End Select
If (ktHolidayName(taskItem.DueDate) <> "") Then
    taskItem.DueDate = taskItem.DueDate - 1
    GoTo HOLIDAY_CHECK
End If

いい感じになったので今日は終了!