VBAでn日後の営業日を計算

VBA

VBAでn日後(または前)の営業日を計算するには
WorksheetFunction.WorkDayを使用します。

祝日の判定を行うために、事前に祝日の日付を
シートに書き込んでおく必要があります。
今回は2018年度の祝日をシートに書き込んでおきます。

祝日 祝日名
2018/1/1 元日
2018/1/2 年始休日
2018/1/3 年始休日
2018/1/8 成人の日
2018/2/11 建国記念の日
2018/2/12 振替休日
2018/3/21 春分の日
2018/4/29 昭和の日
2018/4/30 振替休日
2018/5/3 憲法記念日
2018/5/4 みどりの日
2018/5/5 こどもの日
2018/7/16 海の日
2018/8/11 山の日
2018/9/17 敬老の日
2018/9/23 秋分の日
2018/9/24 振替休日
2018/10/8 体育の日
2018/11/3 文化の日
2018/11/23 勤労感謝の日
2018/12/23 天皇誕生日
2018/12/24 振替休日
2018/12/29 年末休日
2018/12/30 年末休日
2018/12/31 年末休日

 

シートの名前はholidayとし、データの1行目はヘッダーとします。

 

営業日の計算を行うコードは以下になります。

 

holidayシートの最終行を取得するためgetMaxRowを使用しています。
getMaxRowの詳細についてはこちらをご覧ください。

【VBA】最終行・最終列を取得する
for文などで1行目から最終行、または1列目から最終列まで 連続して処理を行いたいときがあります。 この記事では最終行と最終列を取得するVBAのサンプルコードをご紹介します。

 

2018/7/12(木)を起点として、営業日を計算してみます。
営業日を計算するテストコードです。

getWorkDay(#7/12/2018#, 1)
getWorkDayの最初の引数に起点日である#2018/7/12#を入力します。
日付を#で囲んで日付型として入力します。
日付型として入力すると、#月/日/年#の順番に自動的に変わります。
次の引数に1と入力して1営業日後を取得してみます。

2018/7/12(木)の1営業日後は2018/7/13(金)となります。

 

2日後の営業日を取得してみます。
getWorkDay(#7/12/2018#, 2)

2018/7/14(土)、2018/7/15(日)、2018/7/16(祝日・海の日)があるので
2営業日後は2018/7/17(火)となります。

 

1日前の営業日を取得してみます。
getWorkDay(#7/12/2018#, -1)
1営業日前を取得したいときは2番目の引数に-1を入力します。
1営業日前の2018/7/11(水)がメッセージボックスに表示されます。

コメント