VBAを使ったカレンダーの作成

へびせんせい

縦1列の年間カレンダーが作成されるマクロを作成してみましょう。
イメージは下の画像のようなもので、複数の条件を満たすように。

演習問題・年間カレンダーの作成

次のようなカレンダーをsheet1に出力するマクロを作成しなさい。

カレンダー出力イメージ
  • マクロを実行すると、sheet1にカレンダーが出力されるものとする
  • 4月はじまりの年度カレンダーとする
  • 何年度のカレンダーを作成するかは、変数を使って容易に変更できるようにする
  • 日付、曜日、祝日の名称、平日or休日、day_statusを出力すること(day_statusについては後述)
  • 祝日は添付リストをそのまま使ってよいものとする
このExcelファイルを使って、演習をすすめなさい

・上記のカレンダーを出力するマクロを作成せよ
・別シートに祝日リスト(syukujitsu_sheet)と出力結果の例(result_sheet)を記す

Download

祝日について

土曜と日曜、そして祝日は休日として扱う。
祝日は本来、年度によって変動するが、今回は何年度のカレンダーを作成しても、固定の日付で良いものとする。
そのため、実際のカレンダーの祝日の日と異なってよい。

VBAで祝日を自動的に取得するには?
VBEには祝日を取得できるような関数は用意されていない。 祝日はその年によって異なるため、ハードコーティングでの実装が非常に困難である。
もしやるなら、ハッピーマンデイになる祝日、休日ではさまれたときの祝日、第何周何曜日と決まっている祝日といったように、条件分けを行う必要がある。
それでも、オリンピックに伴う特別措置といったその年特有の祝日には対応できないため、あらかじめ入力された他のシートを参照する形式をとるのが無難かもしれない。

この演習では祝日リストは添付のExcelの別シート("syukujitsu_sheet")に記載してある。
syukujitsu_sheetの情報を参照し、そのデータを利用して祝日を実装しなさい。

day_statusについて

カレンダーにはその日がどういう日かを表すday_statusという値を出力するものとする。
day_statusは以下の通りである。

「1」 ・・・ 翌日が平日の平日(例:月曜)
「2」 ・・・ 翌日が休日の平日(例:金曜)
「3」 ・・・ 翌日が平日の休日(例:日曜)
「4」 ・・・ 翌日が休日の休日(例:土曜)
*土曜、日曜、祝日は休日として扱う