前置き

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

今回は、表示の度に日付の色をリセットするので、フォームでの色設定はデフォルトのままで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 641
  • RSSを登録

公開日:2014/08/07


6件のコメント

  • teru
    2017年6月4日 12:24 PM

    休日リストのA列にだけ日付を入れて休日指定したいのですが
    どのようにしたら良いかご教示頂けますでしょうか?

    • *you
      2017年6月5日 1:56 PM

      teruさん、コメントありがとうございます。「休日リスト」シートから休日を検索する部分を、

      こうすればいいんじゃないかなーと思います。

  • teru
    2017年6月7日 1:49 PM

    ありがとうございます。
    ちょっと気になる点がありまして、コンボボックスで西暦を手入力すると
    追加したSet fndの行でエラーになってしまいます。
    使用には差し支えないのですが何がいけないのでしょうか?
    DLした方は問題ないです(4桁まで)

    • *you
      2017年6月8日 12:34 PM

      ああー、コンボボックスの手入力は考えてなかったです。.Findは日付の検索に不安定な動きをすることがあるので、それかもしれませんね。A列の最終端を取得して、ループで回すほうが確実かもしれません。

      昔書いたコードなので宣言とかイケてないなと思って、プロシージャごと書き直してみました。

      これで動くと思います。ただ、コンボボックスに4桁より大きい数値を入れるとか、文字列入れちゃうとか、そういうエラー処理はしておりませんのでご了承ください。

  • teru
    2017年6月10日 6:15 PM

    教えて頂きましたコードにて業務で使える最高の
    カレンダーツールとなりました。
    分かりやすくてとても参考になります。
    ありがとうございました。

    • *you
      2017年6月12日 12:22 PM

      お役に立てまして光栄ですー! (*´∀`) コンボボックスに日付として認識されない数や文字列が直接入力された場合のエラー処理、気になったので追記しました。

      こちらのページのコメント欄に書きましたので、ご参照ください。

コメントを残す




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


back to top