2014
8
07

ExcelVBA自作カレンダーコントロールへ祝日・休日設定する

前回のカレンダー作成のときに書いた「専用シートを作ってフラグを立てといて参照する」というのを、頭の中にせっかく浮かんだんだから、書いてみようかなーと思いました。


前置き

こちらの記事の続きです。

今回は、表示の度に日付の色をリセットするので、フォームでの色設定はデフォルトのままでOKです。

140804-19 140804-20

前回設定したこの手順がいらなくなります。

休日リストをつくる

140807-1

シート名はなんでも良いですが、このように作ってみます。行が月、列が日で31まで。休みにしたい日に 1 を入れてみます。

コード

UserForm2(カレンダーを描いたフォーム)のコード画面に、前回こういうプロシージャを書いているはず。

ここに、以下のハイライト部分を追記します。

12~18行目でカレンダーの日付の色をリセットしています。数値を変えれば好きな曜日を好きな色に出来るので、土日休みじゃないお仕事の方にもいいかも。26~31行目が、さっき作ったシートから該当の日付セルを探してフラグが立ってるか参照している部分です。

まず、A列に該当の年があるか探して、見つかった時だけ処理します。該当の行番号は、年の入っていた行 + 月の数字 -1 なので、fnd.Row + mm - 1となり、該当の列番号は、日付の数値 +2(A, B列分) で、i + 2となります。

そこのセルに 1 が入ってたら、この日はお休みなので、ラベルの文字色を赤くします。(29行目)

140807-2

これで走らせると、休日設定した部分が赤くなります。

休日出勤日も設定してみる

ここは祝日休みなんだけど、この土日は稼動日なんだよなー!なんてことも出来ます。

140807-3

さっきは 1 にしてましたが、こんな感じに「休」「出」など好きな文字を入れておいて、

「休」なら赤、「出」なら黒、というように色をつけてあげます。

140807-4

走らせると、こんな感じ。

所感

休日リストのシートはひとつのブックで独立なので、汎用性はありませんねー。少人数、少ブックでやるのなら、って感じでしょうか。外部データベース(Accessとか)に休日フラグのテーブルを持たせてそこを読み込んで、ってこともできますけど…。

自由に設定出来る反面、使い方は限定的になっちゃうかもですが、こういう方法もあるということで。

  • このエントリーをはてなブックマークに追加
  • follow us in feedly 618
  • RSSを登録

公開日:2014/08/07


コメントを残す




*印は必須項目です。コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にですがスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)


back to top