OfficeExcelVBA前回のカレンダー作成のときに書いた「専用シートを作ってフラグを立てといて参照する」というのを、頭の中にせっかく浮かんだんだから、書いてみようかなーと思いました。前置きExcelVBAでカレンダーコントロールを自作するこちらの記事の続きです。今回は、表示の度に日付の色をリセットするので、フォームでの色設定はデフォルトのままでOKです。前回設定したこの手順がいらなくなります。休日リストをつくるシート名はなんでも良いですが、このように作ってみます。行が月、列が日で31まで。コードUserForm2(カレンダーを描いたフォーム)のコード画面に、前回こういうプロシージャを書いているはず。Subここに、以下のハイライト部分を追記します。Sub12~18行目でカレンダーの日付の色をリセットしています。数値を変えれば好きな曜日を好きな色に出来るので、土日休みじゃないお仕事の方にもいいかも。26~31行目が、さっき作ったシートから該当の日付セルを探してフラグが立ってるか参照している部分です。A列に該当の年があるか探して、見つかった時だけ処理します。入ってたら、この日はお休みなので、ラベルの文字色を赤くします。(29行目)これで走らせると、休日設定した部分が赤くなります。休日出勤日も設定してみるここは祝日休みなんだけど、この土日は稼動日なんだよなー!なんてことも出来ます。Sub「休」なら赤、「出」なら黒、というように色をつけてあげます。走らせると、こんな感じ。休日リストのシートはひとつのブックで独立なので、汎用性はありませんねー。少人数、少ブックでやるのなら、って感じでしょうか。自由に設定出来る反面、使い方は限定的になっちゃうかもですが、こういう方法もあるということで。休日を共有したカレンダーをあちこちで使いたいなら、外部データベース(Accessとか)に休日フラグのテーブルを持たせてそこを読み込んで、って感じのほうが使い勝手はいいと思います。公開日:2014/08/07ExcelVBAに興味をお持ちの方は、こちらの記事もどうぞ!これからExcelのマクロを始めたいという方に!簡単な練習問題作りました。私がExcelVBAでよく使う便利なコード・スニペットまとめプログラム初心者さんへ贈る、エラーが起きたら試してみて欲しいことExcelVBAのクラスモジュールって何?という人向けの使い方まとめ書籍を執筆しています。OfficeExcelVBAでカレンダーコントロールを自作するExcelで1行・1列おきの合計を求めるSUM関数の書き方これからExcelのマクロを勉強したいという方に!簡単な練習問題作りました。PMteruさん、コメントありがとうございます。Withこうすればいいんじゃないかなーと思います。PMありがとうございます。fndの行でエラーになってしまいます。PMああー、コンボボックスの手入力は考えてなかったです。.Findは日付の検索に不安定な動きをすることがあるので、それかもしれませんね。A列の最終端を取得して、ループで回すほうが確実かもしれません。昔書いたコードなので宣言とかイケてないなと思って、プロシージャごと書き直してみました。Subこれで動くと思います。コンボボックスに4桁より大きい数値を入れるとか、文字列入れちゃうとか、そういうエラー処理はしておりませんのでご了承ください。PM教えて頂きましたコードにて業務で使える最高のカレンダーツールとなりました。分かりやすくてとても参考になります。ありがとうございました。コンボボックスに日付として認識されない数や文字列が直接入力された場合のエラー処理、気になったので追記しました。ExcelVBAでカレンダーコントロールを自作するこちらのページのコメント欄に書きましたので、ご参照ください。PMとても分かりやすいご説明で、助かりました。form1をアレンジし、オプションボタンとコマンドボタン、フレームで、異なる国のカレンダーを表示できるようになりました。気になるのは、祝日のフォントのみ太字にどうにか設定できないかな、ラベルクリックで何の祝日なのかを表示できないかと模索しています。PMMimiさん、コメントありがとうございます。本文中に示したマトリクス状の「休日リスト」で、休日のセルに「1」の代わりに「祝日の名称」が入っているものと仮定すると、こんな感じでしょうか。SubラベルコントロールのTagというプロパティに、セルの内容を入れておきます。Subこのように、該当ラベルコントロールのTagの内容をメッセージボックスで表示できます。PMありがとうございます。残念ながらまだ休日表示ができていません。フォーム1のUIを変更したのが原因なのかと思い、1から組み直してみたりしていますが実装にいたっておりません。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。週間人気記事ExcelVBAでカレンダーコントロールを自作するExcelで1行・1列おきの合計を求めるSUM関数の書き方これからExcelのマクロを勉強したいという方に!簡単な練習問題作りました。-2019/09/27運営者*you非IT系の会社で社内業務アプリ開発したりWeb担してたり。ExcelとかAccessの本を書いてます。