(“年齢が上限値を超えています。連結(&)すれば良いですね。同じ値で参照するようにしました。すれば、年齢の上限値を変更する際に、変更箇所が1箇所で済むので、「保守性」が高まりますね。このような観点にも注意して、マクロ開発をして頂ければと思います。7573Q.前回ご質問させて頂きました、ある日付が休日かどうかを判定するのにIsNonWorkDay関数を便利に使っているのですが、いろんなファイルにこの関数を登録するのが面倒だし、最近、休日判定の部分のプログラム(コード)を足したいと思っているのですが、今まで登録した全てのファイルを直さないといけないと思うと憂鬱です。どこか1箇所で管理できないのでしょうか?A.使用上の不便に対して、良い改善点に気づきましたね。このような場合は、Excelでは「アドイン」という仕組みを使います。前回のご質問でお答えしたとおり、Excelでは、VBAのFunctionを、Excelのワークシートで使うことができます。これをワークシート関数に対して、「ユーザー定義関数」と呼んだりします。※以前の記事は下記のリンクからご確認頂けます。http://www.office-kaiketsu.com/excel%ef%bc%88%e3%82%a8%e3%82%af%e3%82%bb%e3%83%ab%ef%bc%89/%e3%83%a6%e3%83%bc%e3%82%b6%e3%83%bc%e5%ae%9a%e7%be%a9%e9%96%a2%e6%95%b0%e3%82%92%e4%bd%bf%e3%81%86/ここで作成したユーザー定義関数「IsNonWorkDay」を、いろんなワークブックで使いたいと言うことですね。いろんなワークブックというより、自分のパソコンで開く全てのワークブックで使えるようにする、これがアドインです。それでは実際の手順を追って説明しましょう。新しいワークブックを開き、前回用意した、InNonWorkDay関数を標準モジュールにコーディングして下さい。(ちゃんと動作確認はして下さいね)その後は、下記の手順でアドインとして保存します。※この時点で、保存フォルダが自動的に「AddIn」フォルダに変わります。これがアドインの保存されるフォルダです。4.「ファイル名」はお好きな(分かりやすいもの)ものとして、保存します。この時点で、アドインファイルが作成されましたから、これを組み込みします。1.「ファイル」タブの「オプション」をクリック2.「Excelのオプション」ダイアログで左側の「アドイン」をクリック3.「設定」をクリック4.「アドイン」ダイアログで先ほど保存したアドインファイルの名前にチェックして「OK」で決定これで、これから開くブックすべてで「IsNonWorkDay」関数が使えるようになります。他のユーザー定義関数でも同様のやり方が使えますから、お気に入りの自分だけの関数をアドイン登録すると便利に使えますね。このようにアドインのユーザー定義関数を使うことで、いろんなファイルで、すぐに自分の用途に合ったユーザー定義関数が使えるというメリットがあります。逆のデメリットとしては、自分で作ったユーザー定義関数入りのアドインが、他の人のパソコンにない場合、これまで説明した手順でアドインを渡して追加してもらうか、ブックの標準モジュールで定義しなおさないと使えなくなります。その点を踏まえて、状況に応じて便利に使っていきましょう。4764Q.Excelでスケジュール管理などを行っていて、日程が休日かどうかを判定するのにWEEKDAY関数を使っていますが、これだと祝日や会社の創立記念日などの休日が判定できません。何か良い方法はありませんか?A.ユーザー定義関数で、休日かどうかを判定する関数を作成しましょう。Excelでは、VBAのFunctionを、Excelのワークシートで使うことができます。これをワークシート関数に対して、「ユーザー定義関数」と呼んだりします。下記のコードを「標準モジュール」の関数(Function)として作成して下さい。Functionこれでユーザー定義関数「IsNonWorkDay」ができました。先にこの関数のコードを説明しましょう。この関数は何もなければFALSEつまり休日でないとの結果を返します。この後のIF分では、休日となる条件を判定し、その場合にこの関数の戻り値をTRUEすなわち休日として返すような作りになっています。ひとつめの★部分で、ワークシート関数のWeekdayを使用して、この値が1(日曜日)または7(土曜日)の場合にTrue(つまり休日と判定する)を返します。ここで休日でなければ、次の★の部分の処理で、土日以外の休日判定をします。この例では、4月1日が会社の創立記念日で休日と判定されるようになっています。この後に、例えば国民の休日の日付などを追加することで、IsNonWorkDay関数で全ての休日を判定できるように処理することができます。このIsNonWorkDay関数は、ワークシートのセル上で、普通のワークシート関数と同じように使用できます。TRUEと表示されれば休日、FALSEと表示されれば休日ではありませんが、期待した結果になっていたことと思います。このように、ユーザー定義関数を使うことで、セルの式がすっきりするというメリットがあります。逆のデメリットとしては、自分で作ったユーザー定義関数の入ったシートは、きちんと説明しないと、別の人が使う場合にかえってわかりにくかったりします。その点を踏まえて、状況に応じて便利に使っていきましょう。2017当ブログではビジネスシーンで起こるPCの様々な疑問を記事にし、解決するブログです。個別のご相談も承っておりますので、ご不明な点はお気軽にお問い合わせフォームor下記メールアドレスへお問合せくださいませ。オフィスソフト活用・業務効率化Q&AブログHomeお問合せ。